PowerShell桌面图标,用于运行提升的其他用户shell

时间:2017-01-30 17:06:31

标签: powershell runas

我需要一个图标来点击桌面,该桌面将启动PowerShell控制台,作为另一个提示输入密码的用户在升高的shell中运行。

以下是我的尝试:

{w,{u,v}}

当我点击名为something.ps1的图标时,所有这些都会显示一个错误的控制台并关闭。

我添加了暂停以尝试捕获错误,但单击图标时窗口不会暂停。但当其中任何一个在ISE中运行时,没有错误,当我运行#1 Start-Process powershell.exe -Credential "domain\user" -verb runAs #2 Start-Process powershell.exe -Credential "domain\user" -NoNewWindow -ArgumentList "Start-Process powershell.exe -Verb runAs" #3 $username = "domain\user" $password = 'the real deal password' $securePassword = ConvertTo-SecureString $password -AsPlainText -Force $credential = New-Object System.Management.Automation.PSCredential $username, $securePassword Start-Process powershell.exe -Credential $credential -verb runAs 时,其他用户上下文中的控制台正确显示。

我猜这个问题出现在UAC中,因为这些命令在ISE中运行但不在桌面上运行?或者是这种一厢情愿的可点击图标?

2 个答案:

答案 0 :(得分:3)

您的脚本失败,因为-Verb runAs-Credential不能一起工作(-Verb-Credential在不同的参数集中)。您可以找到here提到的类似问题。

你可以尝试这样的事情,如果你想在PowerShell中完成这个,但是会显示UAC提示符(在win 10中选中):

$securePassword = ConvertTo-SecureString 'pass@word1' -AsPlainText -Force
$credential = New-Object System.Management.Automation.PSCredential "username", $securePassword
Start-Process powershell -Credential $credential -ArgumentList '-noprofile -command &{ Start-Process powershell -verb runas }'

您可以使用psexec -h参数来提升访问权限。

答案 1 :(得分:1)

我实际上确实让它工作了,虽然它不是传统的,没有catch / ps1语句但由于某些原因它不起作用。此外,我还必须创建一个指向script.ps1文件的快捷方式。

try{ Start-Process powershell.exe -Credential "domain\user" -ArgumentList “Start-Process powershell.exe -Verb runAs” } Catch { Write-host "Hello" }

C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -command "& pathToPs1\script.ps1"

快捷方式指向C:\Windows\System32\WindowsPowerShell\v1.0(从-Credential开始)

通过这两个耦合,一切正常,-VerbUAC一起工作,这不是问题 - 在ISE中尝试 - 没有错误。这似乎是try中的一个突破,并点击桌面上的链接,虽然这只是对猜测分辨率如何工作的猜测。

这不是很漂亮,但希望这有助于其他人。

我的答案归功于this linkthis link以及catchtry错误的评论,感谢您提出建议{{ 1}} / catch声明。