通过Powershell以提升模式启动应用程序

时间:2018-06-16 05:42:36

标签: powershell

我有一个带有epos应用程序的RDS环境,该应用程序在最初安装它的用户下运行正常但需要任何其他用户专门右键单击exe并选择“以管理员身份运行”我有一个本地管理员我想在脚本中使用以自动执行该操作并为用户应用信用。

我尝试了以下内容。

# Construct the credentials object
$username = "svr-rds\xxx"
$password = ConvertTo-SecureString "xxx" -AsPlainText -Force    
$cred = New-Object PSCredential -argumentlist $username, $password

Start-Process powershell.exe -Credential $cred -WindowStyle Hidden `
 '-noprofile -command "Start-Process C:\Montana\Montana.exe /k -Verb RunAs"'

我发现runas命令无论你如何使用它都会将应用程序打开为一个空的应用程序框架,如果我研究正确,那么runas命令与专门提升为admin的命令不同。

有解决方案吗?

1 个答案:

答案 0 :(得分:0)

请注意你说...

  

最初在用户下运行良好的epos应用程序   安装它...

然后要安装和应用,您需要在框中使用Admin或在提示时使用Admin creds。因此,应用程序作为管理员安装,并且全局安装到所有用户,该应用程序仅与用户初始用户身份相关联。因此,当另一个用户登录到这个似乎是共享工作站的用户时,该应用程序永远不会与任何其他用户配置文件相关联。因此,必须使用安装程序标识。

PoSH尽管如此。 RunAs从未意味着“Run Elevated”。它始终意味着使用提供的身份运行。

建议:

为什么不创建.exe的快捷方式并将其属性设置为以管理员身份运行? 您可以使用它来使用快捷方式设置启动应用程序。

invoke-item 'AppName.lnk'

例如,我一直经常使用,我的PoSH主机环境设置为限制。然而,因为我在PoSH中执行所有管理操作,所以我以管理员身份启动PoSH并以此方式提升:

# Shortcut properties for the ISE
C:\Windows\System32\runas.exe /user:contoso\Administrator "%SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe -ExecutionPolicy UnRestricted PowerShell_ISE.exe"

# Shortcut properties for the Console Host
C:\Windows\System32\runas.exe /user:contoso\Administrator "%SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe -ExecutionPolicy Unrestricted"

或者只是创建快捷方式并在快捷方式属性的高级选项卡下设置“以管理员身份运行”复选框。如果您不需要上面的额外ExecutionPolicy步骤。然后整个调用步骤。