【发布时间】:2019-01-22 10:44:26
【问题描述】:
老大换了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今天并不强大。任何帮助,将不胜感激。谢谢!
【问题讨论】:
-
为什么路径中的空格会破坏东西..?您是否尝试替换空格,因为实际路径中 没有 空格?您应该可以按原样运行它:
Get-Content -Path $path -Raw -
@kiasta 您的
$path变量是否嵌入了引号"? -
这是一个环境变量吗?您应该可以访问它:
$Env:DefaultWorkingDirectory -
路径在替换前是这样的:
D:\TFS Agent\_work\r3\a\xxx你有什么证据?您的-replace操作实际上是无操作的。它用空间代替空间。如果你在结果中只得到D:\TFS,那意味着你从一开始就只有那个。
标签: powershell tfs azure-devops azure-pipelines-release-pipeline