在PowerShell中行为不端的Get-ChildItem操作

后端SQL DB包含UNC路径形式的“托管文件夹”.在Power Shell中使用SQL查询我有一个循环,它将通过这些文件夹工作,并对它们运行GCI操作,以计算出他们正在使用多少磁盘空间.

$managedFolder = "\\server\share\folder\subfolder"

为了这个问题,$managedFolder声明如上.下面的失败命令:

$diskTrendsInitialUsage = "{0:N2}" -f ((Get-ChildItem $managedFolder -Recurse -Force | Measure-Object -Property Length -Sum).Sum / 1GB)

现在如果我在PS控制台中手动运行此命令就可以了,它会拉回数据.但是只要它打包在脚本中,它就会失败并出现以下错误.该文件夹可从服务器访问,因为它可以在本地PS控制台会话中正常工作.

ERROR: Get-ChildItem : Invalid Path: '\\server\share\folder\subfolder'.
AddManagedFolder.psf (17): ERROR: At Line: 17 char: 42
ERROR: +         $diskTrendsInitialUsage = "{0:N2}" -f ((Get-ChildItem $managedFolder -Recurse  ...
ERROR: +                                                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ERROR:     + CategoryInfo          : NotSpecified: (:) [Get-ChildItem], ArgumentException
ERROR:     + FullyQualifiedErrorId : System.ArgumentException,Microsoft.PowerShell.Commands.GetChildItemCommand
ERROR:

我很难过.

您的路径问题是它没有任何关于使用哪个提供程序的指示,因此PowerShell只使用当前的提供程序.如果当前提供者不是文件系统提供者,那么它将失败.因此,您需要在路径中指定提供程序,以允许PowerShell选择正确的提供程序,而不管当前提供程序:

$managedFolder = "filesystem::\\server\share\folder\subfolder"
相关文章
相关标签/搜索