Get-ChildItem无法找到路径,因为它不存在

时间:2017-02-28 15:30:42

标签: powershell

我正在编写一个脚本来获取我网络中所有共享的ACL。我有三个独立的UNC路径,我正在运行它。三个中的两个完美地工作,返回所有子项和权限等。但是,第三个UNC路径返回以下错误:

Get-ChildItem : Cannot find path '\\storagesrvr' because it does not exist.

我已使用资源管理器验证了该位置是否可用。我觉得有趣的是,如果我在该路径的任何子股上使用GCI,它就可以工作。什么可能阻止GCI检测共享的根?

编辑(根据评论的要求):我没有遇到任何问题的其他两个股票被命名为\\networkpath\share。但因为我只是看着根,GCI没有工作。

3 个答案:

答案 0 :(得分:4)

正如我在评论中提到的\\computername只是部分UNC路径(检查[MS-DTYP] Windows Data Type specification中的UNC语法)。

资源管理器"了解"这个,所以它在后台做了一些黑魔法,允许你浏览远程计算机上的共享。

您可以通过查询远程计算机上的Win32_Share WMI实例来模拟这一点:

foreach($Share in Get-WmiObject Win32_Share |?{$_.Name -not 'IPC$'}){
    Get-ChildItem "\\$($Share.__SERVER)\$($Share.Name)"
}

答案 1 :(得分:2)

您可以通过以下方式列出股票:

net view \\<computername>

源: PowerShell Get List Of Folders Shared

答案 2 :(得分:1)

错误消息字面上是正确的。 \\storageserver不是路径。它是两个反斜杠,后跟一个计算机名称。

为其附加共享名称,它将成为路径;例如\\storageserver\sharename