PowerShell 无法从批处理文件运行脚本

PowerShell 无法从批处理文件运行脚本

我正在编写一个批处理文件,双击该批处理文件即可运行 PowerShell 脚本。我很难让批处理文件激活时执行任何操作。当我测试 ps1 文件时,PowerShell 脚本运行正常。但是一旦我从中调用批处理文件,它似乎就不起作用了。

批处理文件:

@ECHO OFF
SET ThisScriptsDirectory=%~dp0
SET PowerShellScriptPath=%ThisScriptsDirectory%FileNotifyscript.ps1
PowerShell -NoProfile -ExecutionPolicy Bypass -Command "& {Start-Process PowerShell -ArgumentList '-NoProfile -ExecutionPolicy Bypass -File ""%PowerShellScriptPath%""' -Verb RunAs}";

在此处输入图片描述

答案1

这是一个逃避问题,

  • cmd 会将内部双引号解释为第一个引号的结束,
    因为单引号仅对 PowerShell 具有特殊含义。
  • 使用反斜杠转义一个\"双引号

:: Q:\Test\2019\04\22\SU_1428283.cmd
@ECHO OFF
SET "PowerShellScriptPath=%~dp0FileNotifyscript.ps1
PowerShell -NoProfile -ExecutionPolicy Bypass -Command ^ 
 "& {Start-Process PowerShell -ArgumentList '-NoProfile -ExecutionPolicy Bypass -File \"%PowerShellScriptPath%\"' -Verb RunAs}"
pause

相关内容