我如何 运行 一个带参数的程序并以管理员身份使用 PowerShell
How do i run a program with arguments and as administrator using PowerShell
我有一个脚本,它必须使用参数启动我的程序,是的,它有效,就在这里。
powershell.exe -Command "Start-Process -Verb RunAs -FilePath cmd.exe -Args /C, '\"%1\"'"
但是当我用我的自定义参数替换 %1
时,程序不再工作了。
我用这些参数替换它
takeown.exe /F "C:\Users\WobbyChip\Desktop\New folder" /R /D Y & icacls.exe "C:\Users\WobbyChip\Desktop\New folder" /grant Everyone:F /T
现在我的脚本不起作用。
powershell.exe -Command "Start-Process -Verb RunAs -FilePath cmd.exe -Args /C, '\"takeown.exe /F "C:\Users\WobbyChip\Desktop\New folder" /R /D Y & icacls.exe "C:\Users\WobbyChip\Desktop\New folder" /grant Everyone:F /T\"'"
有关详细信息,我从注册表上下文菜单启动此脚本,它看起来像这样。但是从注册表或其他地方启动没有区别。结果是一样的。
最有趣的是我的隐藏脚本有效,但权限无效。这是隐藏脚本
powershell.exe -Command "Start-Process -Verb RunAs -FilePath attrib.exe -Args +h, +s, '\"%1\"'"
有趣的是,当我试图解决这个问题时,我在 CMD 中遇到了这个错误,但我不知道这意味着什么以及如何解决它。
嵌套引用变得复杂,您的命令缺少对嵌入 "
个字符的正确转义。
尝试以下操作,它应该适用于 cmd.exe
和注册表中的上下文菜单命令定义:
powershell.exe -Command Start-Process -Verb RunAs cmd.exe -Args /C, 'takeown.exe /F \"C:\Users\WobbyChip\Desktop\New folder\" /R /D Y "&" icacls.exe \"C:\Users\WobbyChip\Desktop\New folder\" /grant Everyone:F /T'
尽可能省略可选引号,以尽量减少嵌套引号的需要。
'...'
像往常一样被 PowerShell 解释为字符串文字。
"
个字符。应该这样保留 - 即使在 '...'
中 - 也必须转义为 \"
.
&
被转义为 "&"
以防止 cmd.exe
解释它(您在注册表中并不严格需要它); PowerShell 稍后会去除这些双引号,因为它们不是 \
-escaped.
我有一个脚本,它必须使用参数启动我的程序,是的,它有效,就在这里。
powershell.exe -Command "Start-Process -Verb RunAs -FilePath cmd.exe -Args /C, '\"%1\"'"
但是当我用我的自定义参数替换 %1
时,程序不再工作了。
我用这些参数替换它
takeown.exe /F "C:\Users\WobbyChip\Desktop\New folder" /R /D Y & icacls.exe "C:\Users\WobbyChip\Desktop\New folder" /grant Everyone:F /T
现在我的脚本不起作用。
powershell.exe -Command "Start-Process -Verb RunAs -FilePath cmd.exe -Args /C, '\"takeown.exe /F "C:\Users\WobbyChip\Desktop\New folder" /R /D Y & icacls.exe "C:\Users\WobbyChip\Desktop\New folder" /grant Everyone:F /T\"'"
有关详细信息,我从注册表上下文菜单启动此脚本,它看起来像这样。但是从注册表或其他地方启动没有区别。结果是一样的。
最有趣的是我的隐藏脚本有效,但权限无效。这是隐藏脚本
powershell.exe -Command "Start-Process -Verb RunAs -FilePath attrib.exe -Args +h, +s, '\"%1\"'"
有趣的是,当我试图解决这个问题时,我在 CMD 中遇到了这个错误,但我不知道这意味着什么以及如何解决它。
嵌套引用变得复杂,您的命令缺少对嵌入 "
个字符的正确转义。
尝试以下操作,它应该适用于 cmd.exe
和注册表中的上下文菜单命令定义:
powershell.exe -Command Start-Process -Verb RunAs cmd.exe -Args /C, 'takeown.exe /F \"C:\Users\WobbyChip\Desktop\New folder\" /R /D Y "&" icacls.exe \"C:\Users\WobbyChip\Desktop\New folder\" /grant Everyone:F /T'
尽可能省略可选引号,以尽量减少嵌套引号的需要。
'...'
像往常一样被 PowerShell 解释为字符串文字。"
个字符。应该这样保留 - 即使在'...'
中 - 也必须转义为\"
.&
被转义为"&"
以防止cmd.exe
解释它(您在注册表中并不严格需要它); PowerShell 稍后会去除这些双引号,因为它们不是\
-escaped.