PowerShell 使用指定账户启动引用程序 1


如果要使用不同的用户凭据来运行某个程序,除了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
请尊重原作者和编辑的辛勤劳动,欢迎转载,并注明出处!

关于 Mooser Lee

我是一个Powershell的爱好者,创建了PowerShell中文博客,热衷于Powershell技术的搜集和分享。本站部分内容来源于互联网,不足之处敬请谅解,并欢迎您批评指正。

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注

一条评论 “PowerShell 使用指定账户启动引用程序

  • 中小明

    $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