【问题标题】:Count files in a network folder using PowerShell使用 PowerShell 计算网络文件夹中的文件
【发布时间】:2014-07-16 16:47:23
【问题描述】:

我已经搜索了大量有关此问题的 MSDN/Technet 和 StackOverflow 文章,但找不到解决问题的方法。 SO参考如下。

我正在尝试在我的服务器上运行一个脚本,该脚本只计算网络位置文件夹中的文件。

如果它是本地文件夹,我可以让它工作,当我映射网络驱动器时我可以让它工作。但是我不能使用网络驱动器,因为我将从没有用户帐户的 Web 界面运行此脚本(本地驱动器工作正常)。

我的脚本是:

$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

【问题讨论】:

  • 您无法在没有访问共享权限的情况下枚举共享上的文件。使用显式凭据映射驱动器,或授予运行代码的用户(通常是网络服务器服务帐户)访问共享的权限。无论哪种方式,这都是 SO 的主题。
  • 你能解释一下为什么这不是 SO 的主题吗?我在 SO 上发现了非常相似的问题。
  • 这是系统管理问题,而不是编程问题。
  • 很公平。你会建议我在哪个网络上发布它?
  • 我认为SuperUser 是解决此类问题的最佳地点。

标签: powershell monitoring


【解决方案1】:

我能想到的两件事,

一种方法是将 -path 添加到您的 get-childitem 调用中。我在我的 Powershell 上对此进行了测试,它运行良好。

$files = get-childitem -path C:\temp $files.count 这将返回该路径中的文件数。

但是,我正在本地文件上对此进行测试。如果您确定这是给您带来麻烦的远程访问部分,我建议您尝试设置凭据。除了get-credentials 选项之外,您还可以尝试自己设置它们。

$Credentials = New-Object System.Management.Automation.PsCredential("Username", "password")

那么也许您可以设置驱动器并且仍然能够访问您的文件。希望有帮助。

【讨论】:

    【解决方案2】:

    试试这个:

    set-location \\\storage\folder\
    
    dir -recurse |  where-object{ $_.PSIsContainer } | ForEach{ Write-Host $_.FullName (dir $_.FullName | Measure-Object).Count } 
    

    这将计算每个子文件夹中的文件数(递归),并在输出中显示完整路径和计数。

    【讨论】:

      猜你喜欢
      • 2012-10-07
      • 2013-01-20
      • 2012-06-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-15
      • 1970-01-01
      相关资源
      最近更新 更多