我有一个 test.bat 来以管理员权限和不受限制的策略运行 test.ps1,并且两者都在同一个文件夹(本地 PC)中,但是该 bat 不运行 ps1。出了什么问题?
PowerShell -NoProfile -ExecutionPolicy Bypass -Command "& {Start-Process PowerShell -ArgumentList 'Set-ExecutionPolicy Unrestricted -Force -File" "% ~ dpn0.ps1" "' -Verb RunAs}"
我的脚本类似于这
答案1
您有多个问题:
- 嵌套的双引号让人困惑,你需要转义内部引号,和/或在双引号内使用单引号。
- 您在调用“”时有多余的空格%~DPN0“。
- 您错误地将脚本名称变量 (%~DPN0) 连接到 ArgumentList 中。
- Start-Processes
ArgumentList
接受字符串数组 (string[]
),而不是空格分隔的列表。要传递静态字符串数组,请用逗号分隔字符串项。 - 您还试图运行
-command
和a-file
,并且不能在单个 PowerShell.exe 调用中同时使用-file
参数和参数。-command
- 您正在尝试运行 PowerShell 命令 (
Set-ExecutionPolicy
),但未指定-command
参数。要设置您尝试运行的 Powershell.exe 会话的执行策略,请使用 PowerShell.exe 的-ExecutionPolicy
参数,而不是尝试运行该Set-ExecutionPolicy
命令。
这是您的命令的更正版本:
PowerShell -NoProfile -ExecutionPolicy Bypass -Command "Start-Process PowerShell -ArgumentList '-ExecutionPolicy Unrestricted','-File %~dpn0.ps1' -Verb RunAs"