powershell - 当 ps 脚本路径包含空格且路径源自 %~dp0% 时,如何从批处理文件运行 powershell 脚本

标签 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

最佳答案

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

将代码更改为:

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

关于powershell - 当 ps 脚本路径包含空格且路径源自 %~dp0% 时,如何从批处理文件运行 powershell 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52880803/

相关文章:

powershell - 使用PowerShell和SMO库从.BAK文件创建新数据库

powershell - 在 Powershell 中,将字符串转换为 int 的惯用方法是什么?

batch-file - 获取显示器分辨率的命令行参数仅返回一台显示器

batch-file - 创建批处理文件以运行带有附加参数的.exe

python替换为捕获组

windows - 转义 Windows 批处理文件中的符号

apache - 如何从Powershell输出中删除多余的空格?

powershell - 如何在Sharepoint 2013中更改版本标签名称

powershell - 如何在PowerShell中使用Copy-Item覆盖文件

windows - 在 Windows 批处理文件中寻找 Unix 风格的 'getopt' 命令行解析