如果要使用不同的用户凭据来运行某个程序,除了RunAs.exe外,也可以使用Start-Process 命令中提供的参数-Credential。下面的代码会使用域用户mydomain\myuser来启动Notepad编辑器。
Start-Process -FilePath notepad -Credential mydomain\myuser
但是可能会碰到错误,例如权限问题,账户问题。在切换了用户上下文以后,应用程序的当前路径仍旧没有发生改变,会使用之前的路径。如果此时新的用户凭据没有权限访问当前路径也会出错,或者当前路径被映射到一个不可达的网络路径也会出错。所以这也是为什么建议同时为打开的应用程序指定工作目录。
Start-Process -FilePath notepad -Credential mydomain\myuser -WorkingDirectory C:\
如果你想加载用户配置文件,也可以添加-LoadUserProfile参数。
缺点:没有解决UAC问题,即不能让指定用户以管理员权限启动应用程序。 但是如果你要启动的程序是PowerShell.exe,可以使用runAs来提升权限,
Start-Process powershell.exe -Credential "TestDomain\Me" -NoNewWindow -ArgumentList "Start-Process powershell.exe -Verb runAs"
原文链接:Launching Applications with Alternate Credentials
本文链接: https://www.pstips.net/powershell-launching-applications-with-alternate-credentials.html
请尊重原作者和编辑的辛勤劳动,欢迎转载,并注明出处!
请尊重原作者和编辑的辛勤劳动,欢迎转载,并注明出处!
$file=”\\lattebank\sharefolder\password.txt”
[Byte[]]$key=(1..16)
$password=Get-Content $file |ConvertTo-SecureString -Key $key
$username=”oa\zhongxiaoming”
$defaultcredential=New-Object Management.Automation.pscredential ($username,$password)
Start-Process -FilePath “C:\software0\Foxmail.exe” -Credential $defaultcredential -Wait
报错:
Start-Process : 由于出现以下错误,无法执行此命令: 请求的操作需要提升。。
所在位置 C:\software\install_software.ps1:24 字符: 14
+ Start-Process <<<< -FilePath "C:\software\Foxmail.exe" -ArgumentList "/passive" -Credential $defaultcredential
+ CategoryInfo : InvalidOperation: (:) [Start-Process], InvalidOperationException
+ FullyQualifiedErrorId : InvalidOperationException,Microsoft.PowerShell.Commands.StartProcessCommand