我已经搜索过很多关于此问题的MSDN / Technet和StackOverflow文章,但我无法找到解决问题的方法。 SO参考如下。
我正在尝试在我的服务器上运行一个脚本,该脚本只计算网络位置文件夹中的文件。
如果它是本地文件夹,我可以使它工作,我可以在映射网络驱动器时使其正常工作。但是,我无法使用网络驱动器,因为我将从没有用户帐户的网络界面运行此脚本(本地驱动器正常工作)。
我的脚本是:
$Files = Get-ChildItem \\storage\folder -File
$Files.count
我收到错误:
Get-ChildItem : Cannot find path '\\storage\folder' because it does not exist.
[0] open folder from Network with Powershell
[1] File counting with Powershell commands
[2] Count items in a folder with PowerShell
[3] Powershell - remote folder availability while counting files
答案 0 :(得分:0)
我能想到的两件事,
一种方法是在你的get-childitem调用中添加-path。我在我的Powershell上进行了测试,结果很好。
$files = get-childitem -path C:\temp
$files.count
这将返回该路径中的文件数。
但是我在本地文件上测试它。如果您确定它是远程访问部分给您带来麻烦,我建议尝试设置凭据。除get-credentials
选项外,您还可以尝试自己设置它们。
$Credentials = New-Object System.Management.Automation.PsCredential("Username", "password")
然后,您可以设置驱动器,但仍然可以访问您的文件。希望有所帮助。
答案 1 :(得分:0)
试试这个:
set-location \\\storage\folder\
dir -recurse | where-object{ $_.PSIsContainer } | ForEach{ Write-Host $_.FullName (dir $_.FullName | Measure-Object).Count }
这将计算每个子文件夹中的文件数(递归),并在输出中显示完整路径和计数。