当ps脚本路径包含空格并且路径从%〜dp0%

时间:2018-10-18 18:59:01

标签: powershell batch-file

我有一个批处理文件Install.bat,它调用GetVersion.ps1 powershell脚本。这两个脚本位于同一文件夹(C:\ Install_Media)中,我通过获取批处理文件所在的目录(使用%〜dp0%)来调用Powershell脚本。

如果这些文件所在的路径中没有空格,则以下代码可以很好地工作。如果路径中有空格,则不会执行shellscript(例如C:\ Install Media)。该脚本停止说“ C:\ Install”一词未被识别为cmdlet,函数,脚本的名称。

@ECHO OFF
set SRC_DIR=%~dp0%
Powershell set-executionPolicy remotesigned
Powershell %SRC_DIR%\GetSLMClientVersion.ps1
Powershell set-executionPolicy restricted

Error ScreenShot

1 个答案:

答案 0 :(得分:4)

参数扩展在表达式的开头仅使用一个%字符。另外,您不需要来回更改执行策略。 powershell.exe具有用于临时覆盖执行策略的参数。正如TheIncorrigible1在评论中指出的那样,最好通过将路径放在引号中来处理路径中的空格。

将代码更改为此:

@echo off
powershell.exe -ExecutionPolicy Bypass -File "%~dp0\GetSLMClientVersion.ps1"