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功能?为什么呢?
答案 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支持的任何其他奇特位置。