如何在PowerShell中以其他用户身份运行带参数的程序?
把CMD的runas命令转换成PowerShell版本
没问题,我来帮你搞定这个转换!你的原CMD命令是用runas以指定域账户保存凭据,运行带/t参数的程序,在PowerShell里主要注意引号的转义处理就行,因为PowerShell对引号的解析和CMD略有不同。
直接适配的PowerShell命令(最接近原CMD逻辑)
你可以直接在PowerShell里执行runas.exe,只需要调整内部引号的写法:
# 方法1:用单引号包裹内部的双引号 C:\Windows\System32\runas.exe /savecred /user:ourdomain\ouruseracct '"C:\Program Files (x86)\ProjectMatrix\ProjectNotify\ProjectNotify.exe /t"' # 方法2:用反引号`转义内部双引号 C:\Windows\System32\runas.exe /savecred /user:ourdomain\ouruseracct "`"C:\Program Files (x86)\ProjectMatrix\ProjectNotify\ProjectNotify.exe /t`""
更具PowerShell风格的写法(用Start-Process)
如果你想用上PowerShell的Start-Process cmdlet,也可以这么写,把参数拆分开更清晰:
# 定义runas的参数列表 $runasParameters = @( "/savecred", "/user:ourdomain\ouruseracct", '"C:\Program Files (x86)\ProjectMatrix\ProjectNotify\ProjectNotify.exe /t"' ) # 启动runas进程 Start-Process -FilePath "C:\Windows\System32\runas.exe" -ArgumentList $runasParameters
小说明
- 两种写法的效果和原CMD完全一致,都会用
ourdomain\ouruseracct账户保存凭据,并运行带/t参数的ProjectNotify.exe。 - 之所以要处理引号,是因为程序路径里有空格,必须用引号包裹,而PowerShell里如果在双引号字符串里再用双引号,需要转义或者用单引号嵌套,否则会被解析成多个参数。
内容的提问来源于stack exchange,提问作者da64u
相关产品推荐
相关产品推荐

