2015-09-28 23 views
0

我正在使用Powershell腳本來計算2個網絡路徑的每個子目錄中文件的數量。當我在ISE Debug中運行它時,我的腳本工作得很好,但是當我嘗試運行Powershell時,輸出被截斷,並且不提供計數。我很確定這是由於我在錯誤的位置關閉了foreach,但我似乎無法弄清楚這一點。我對Powershell非常陌生。運行PowerShell vs ISE時網絡位置,不同輸出的PowerShell計數文件

$dirs = "\\myserver\myshare\directory1" , "\\myserver\myshare\directory2" 
$txt = "\\myserver\myshare\output.txt" 

ForEach ($dir in $dirs) 
    { 
    (Get-ChildItem $dirs -recurse -Directory | ForEach-Object{ 
     $props = @{ 
     Folder = $_.FullName 
     Count = (Get-ChildItem -Path $_.Fullname -File | Measure- Object).Count 
       } 
New-Object PSObject -Property $props } | Select-Object Folder , Count) | Format-Table -AutoSize | Out-File $txt 
} 

回答

0

兩件事情:

  1. GET-ChildItem應該是$不是$目錄顯示目錄
  2. 您的格式,表格應包含字段名稱。
$dirs = "\\myserver\myshare\directory1", "\\myserver\myshare\directory2" 
$txt = "\\myserver\myshare\output.txt" 

ForEach ($dir in $dirs) 
{ 
    (Get-ChildItem $dir -recurse -Directory | ForEach-Object { 
     $props = @{ 
     Folder = $_.FullName 
     Count = (Get-ChildItem -Path $_.Fullname -File | Measure-Object).Count 
       } 
New-Object PSObject -Property $props } | Select-Object Folder, Count) | Format-Table -AutoSize -property Folder, Count | Out-File $txt 
} 

我相信#2是因爲格式表是假設你的PS窗口的寬度是最大線寬。如果ISE窗口全屏,則PS窗口的寬度大於獨立PS窗口的默認設置。

0

謝謝,我現在有這個工作。我仍然不得不使用Get-ChildItem $ Dirs,通過使用Dir,它只寫入了一個到csv文件中的路徑。然而,我根據你的建議使用了格式表,但是我將「外部化」改爲了「包裝」。

$dirs= ""\\myserver\myshare\directory1","\\myserver\myshare\directory2"                           
$txt = "\\myserver\myshare\output.txt" 

ForEach ($dir in $dirs) 
{ 
(Get-ChildItem $dirs -recurse -Directory | ForEach-Object { 
    $props = @{ 
    Folder = $_.FullName 
    Count = (Get-ChildItem -Path $_.Fullname -File | Measure-Object).Count 
      } 
New-Object PSObject -Property $props } | Select-Object Folder, Count) |Format-Table -Wrap -property Folder, Count | Out-File $txt 
} 
相關問題