powershell - 如何使powershell内联脚本路径识别空格?
问题描述
老板更改了 TFS 服务器并在其中添加了一个空格,path: D:\TFS Agent\xxx
这导致我的 powershell 脚本在发布时失败。
我们有构建/发布自动集成,TFS
我有一个内联 powershell 任务来读取文件并将其转换为JSON
然后执行一些SQL
. 我一直工作到今天早上。
问题是代理路径是一个系统变量,TFS: $(System.DefaultWorkingDirectory)
我不确定如何处理路径中的空间。
我试过这个:
# Begin inline script
Param(
[string]$path,
[string]$db,
[string]$schema,
[string]$envName
)
# Create module
$formattedPath = $path -replace " ", "` ";
$conv = Get-Content -Raw -Path "$formattedPath" | ConvertFrom-Json;
但我得到的只是 D:\TFS。替换前的路径如下所示:
D:\TFS Agent\_work\r3\a\xxx
我一生都无法弄清楚如何用刻度线替换空格或如何忽略空格。我对powershell很陌生,所以这可能只是一些简单的事情,但我的google-fu今天并不强大。任何帮助,将不胜感激。谢谢!
解决方案
看来您通过 $(System.DefaultWorkingDirectory) 变量路径如下:
-path $(System.DefaultWorkingDirectory)
同时,如果$(System.DefaultWorkingDirectory)
包含空格(如D:\TFS Agent\_work\r3\a
),它将显示将值以空格分隔为不同的行(如D:\TFS Agent\_work\r3\a
将显示为两行与 valueD:\TFS
和Agent\_work\r3\a
)。所以$path
具有第一行中的值的变量(如D:\TFS
)。
要解决此问题,您只需为 . 添加双引号$(System.DefaultWorkingDirectory)
即可。因此,只需将 PowerShell 任务中的参数更改为:
-path "$(System.DefaultWorkingDirectory)"
推荐阅读
- c - 将十进制转换为二进制的 C 程序 - 只有 64 位以下的值才是准确的
- javascript - 如何区分承诺链中的操作错误和程序员错误?
- data-science - 考虑到销售额有自然增长,如何建立统计模型来确定网站内容的更新是否促进了销售额
- javascript - 我将如何测试具有内部承诺的功能?
- vba - 遍历文件夹中的所有 Excel 工作簿并将所有公式转换为值
- javascript - 微服务架构和 MySQL 数据库分页
- ms-access - MS Access 打印页边距重置。
- opengl - GLSL 空函数使代码工作
- html - 害怕 CSS 会被其他 css 文件覆盖
- swift - Swift:复制 UInt32 缓冲区的最快方法