我需要一个图标来点击桌面,该桌面将启动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中运行但不在桌面上运行?或者是这种一厢情愿的可点击图标?
答案 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
开始)
通过这两个耦合,一切正常,-Verb
和UAC
一起工作,这不是问题 - 在ISE中尝试 - 没有错误。这似乎是try
中的一个突破,并点击桌面上的链接,虽然这只是对猜测分辨率如何工作的猜测。
这不是很漂亮,但希望这有助于其他人。
我的答案归功于this link和this link以及catch
和try
错误的评论,感谢您提出建议{{ 1}} / catch
声明。