从批处理文件中以管理员权限和不受限制的策略运行 ps1?

从批处理文件中以管理员权限和不受限制的策略运行 ps1?

我有一个 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

您有多个问题:

  1. 嵌套的双引号让人困惑,你需要转义内部引号,和/或在双引号内使用单引号。
  2. 您在调用“”时有多余的空格%~DPN0“。
  3. 您错误地将脚本名称变量 (%~DPN0) 连接到 ArgumentList 中。
  4. Start-ProcessesArgumentList接受字符串数组 ( string[]),而不是空格分隔的列表。要传递静态字符串数组,请用逗号分隔字符串项。
  5. 您还试图运行-command a -file,并且不能在单个 PowerShell.exe 调用中同时使用-file参数和参数。-command
  6. 您正在尝试运行 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"

相关内容