老板更改了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今天并不强大。任何帮助,将不胜感激。谢谢!
答案 0 :(得分:1)
似乎您正在通过变量路径传递$(System.DefaultWorkingDirectory):
-path $(System.DefaultWorkingDirectory)
同时,如果$(System.DefaultWorkingDirectory)
包含空格(例如D:\TFS Agent\_work\r3\a
),它将显示按空格将值划分为不同的行(例如D:\TFS Agent\_work\r3\a
将显示两行,其值为{ {1}}和D:\TFS
)。因此变量Agent\_work\r3\a
的值在第一行(例如$path
)。
要解决此问题,您只需为D:\TFS
添加双引号。因此,只需将PowerShell任务中的参数更改为:
$(System.DefaultWorkingDirectory)