我使用的Get-ChildItem带有一个导航到公共文件共享的路径。我能够从本地机器导航到通用文件共享,没有任何问题,但当我将此代码部署到PROD服务器时,我遇到了找不到路径的问题。
PowerShell命令:
Get-ChildItem "\servername.netabcd"
错误:
Get-ChildItem : Cannot find path '\servername.netabcd' because it does not exist.
At line:2 char:1
+ Get-ChildItem '\servername.netabcd'
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (\servername.netabcd:String) [Get-ChildItem], ItemNotFoundException
+ FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.GetChildItemCommand
不确定是否有人经历过这个问题以及如何解决这些环境问题。
非常感谢您的帮助。
电源外壳错误
根据您的屏幕截图,我认为这是Get-ChildItem
访问UNC路径的限制,而当前位置是SqlServer
提供程序。我看到了一些选择:
-
将
PSDrive
映射到UNC路径,以便Get-ChildItem
具有可直接使用的FileSystem
提供程序。New-PSDrive -Name Z -Root "\servername.netabcd" -PSProvider FileSystem Get-ChildItem Z:
-
使用不同的方法检索文件和目录。
[System.IO.Directory]::EnumerateFileSystemEntries("\servername.netabcd")
-
使用位置堆栈进入
FileSystem
。然后返回到您以前的PSDrive
。Push-Location C: Get-ChildItem "\servername.netabcd" Pop-Location
在评估环境后发现,由于域差异,这些UNC路径问题正在发生。
我的笔记本电脑和归档文件共享位于同一个域中,归档脚本就是这样工作的,没有任何问题。而我部署脚本的PROD服务器位于不同的域中。
通过识别与存档文件共享具有相同域名的另一个PROD服务器解决了此问题,并使用任务调度器部署了脚本。