【问题标题】:Passing command to Admin Powershell after opening Powershell from script从脚本打开 Powershell 后将命令传递给 Admin Powershell
【发布时间】:2023-04-03 15:02:01
【问题描述】:
通过命令提示符,我希望以管理员身份打开 Powershell 并传递命令以使其执行。命令很简单:删除目录中的所有 .txt 文件。我很难将此命令传递到 Admin Powershell。这是我正在尝试的:
powershell -Command "Start-Process powershell -Verb runAs | Remove-Item -Path C:\MyFolder\*.txt"
到目前为止,Powershell 窗口打开,但没有执行任何操作。
【问题讨论】:
标签:
windows
powershell
cmd
【解决方案1】:
问题
您只是将Start-Process 的$null 输出传送到Remove-Item,这没有任何意义。
解决方案
您的第二次 Powershell 调用应使用 -Command 参数:
powershell -command Start-Process powershell -Verb runAs -ArgumentList @('-Command', 'Remove-Item', \"'C:\MyFolder\*.txt'\")
-command 后面的命令行不需要加引号,这样可以简化嵌套引用。
Remove-Item 参数看起来有些奇怪的引用是支持带空格的路径所必需的。首先反斜杠转义的双引号将由 cmd 解析器解析,最后 Remove-Item 调用将如下所示:
Remove-Item 'C:\MyFolder\*.txt'
【解决方案2】:
powershell -Command "start-process powershell -Verb RunAs -Args 'Remove-Item -Path C:\MyFolder\*.txt'"
您也可以将 remove-item 作为字符串格式的参数传递