Set-AzureDeployment忽略相对路径

时间:2015-02-17 16:08:15

标签: powershell azure

PS C:\Users\dimon\src\panama\Panama> Set-AzureDeployment -Config -ServiceName pms-dimon -Slot "Production" -Configuration .\ServiceConfiguration.Test.cscfg -Verbose
Set-AzureDeployment : Could not find a part of the path 'C:\Users\dimon\ServiceConfiguration.Test.cscfg'.
At line:1 char:1
+ Set-AzureDeployment -Config -ServiceName pms-dimon -Slot "Production" -Configur ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [Set-AzureDeployment], DirectoryNotFoundException
    + FullyQualifiedErrorId : System.IO.DirectoryNotFoundException,Microsoft.WindowsAzure.Commands.ServiceManagement.HostedServices.SetAzureDeploymentCommand

而不是在当前目录ServiceConfigiration.Test.cscfg中查找Set-AzureDeployment文件,而是希望在当前用户的主目录中找到此文件,坦率地说这很令人讨厌。

是否有一些常见的Powershell模式从主目录开始运行所有cmdlet功能?为什么呢?

1 个答案:

答案 0 :(得分:1)

您可以明确传递完整路径:

Set-AzureDeployment -Config -ServiceName pms-dimon -Slot "Production" `
  -Configuration $(rvpa .\ServiceConfiguration.Test.cscfg) -Verbose

回答你的问题:不,PowerShell对主目录没有什么特别之处。但是,如果执行[Environment]::CurrentDirectory,则当前目录的值暴露给非PowerShell命令(cd)不会更改,这通常会导致意外。如果Set-AzureDeployment将其参数传递给非PowerShell命令,则可以解释该行为。

要以一般方式解决这个问题,您只需在发出更多命令之前将当前目录更改为PowerShell的位置:

[Environment]::CurrentDirectory = $(pwd)

显然,这只适用于当前位置在文件系统中,而不是PowerShell支持的任何其他奇特位置。