2012-01-04 3 views
0

Я по-прежнему новичок в PowerShell и стараюсь найти лучший способ получить размер отдельных папок Itunes на нашем сервере. Существует несколько папок, и все они находятся в профилях пользователей. Это сценарий, который у меня есть, но он не отображает все отдельные папки.сценарий powershell для получения размеров папок «itune (s)» на нашем сервере

#Gets a list of all itunes folders 
$dirOfItunes = dir -Recurse -Filter "iTunes Media" -ErrorAction silentlycontinue 

Write-Host "list of itunes folders found: " $dirOfItunes 
ForEach ($i in $dirOfItunes) 
{ 
    $UserItuneFolder = (Get-ChildItem -Recurse | Measure-Object -property length -sum) 

    Write-Host "details of Itunes folders found: " Write-Host $UserItuneFolder.get_Sum() 

    write-host "folder name: " $i.FullName 

    "size " + "{0:N2}" -f ($UserItuneFolder.sum/1MB) + " MB" 
} 

ответ

1

Вы забыли $ I (в цикле Еогеасп) после того, как Get-ChildItem (вы хотите знать, общий размер $ я, правда?)

Это должно делать то, что вы хотите:

#Gets a list of all itunes folders 
$dirOfItunes = dir -Recurse -Filter "iTunes Media" -ErrorAction silentlycontinue 

Write-Host "list of itunes folders found: " $dirOfItunes 
ForEach ($i in $dirOfItunes) 
{ 
    $UserItuneFolder = (Get-ChildItem $i.fullname -Recurse | Measure-Object -property length -sum) 
    Write-Host "details of Itunes folders found: " ([int] $UserItuneFolder.sum) 
    write-host "folder name: " $i.FullName 
    "size " + "{0:N2}" -f ($UserItuneFolder.sum/1MB) + " MB" 
} 
+0

Я хочу, чтобы общая сумма для каждой найденной папки. – resolver101

+0

Это то, что вы получаете в этом примере, нет? –

+0

в результатах я получил следующее: Список найденных папок itunes: iTunes Media iTunes Media iTunes Media iTunes Media iTunes Media iTunes Media iTunes Media iTunes Media iTunes Media iTunes Media iTunes Media ChildItem: Не удается найти путь 'C: \ Users \ sbsadmin \ iTunes Media ", потому что его не существует. $ UserItuneFolder = (Get-ChildItem <<<< $ i -Recurse | Measure-Object -property length -sum) Строка: 6 char37 Вы не можете вызвать метод в нулевом выражении. + CategoryInfo: ObjectNotFound: (C: \ Users \ sbsadmin \ iTunes Media: String) [Get-ChildItem], ItemNotFoundException Строка: 8 char 76 – resolver101

0

Не уверен, что если я сделаю правильную вещь, разместив это как ответ, потому что у вас недостаточно места в комментариях, но это последний код, который я использовал. Спасибо jon Z за вашу помощь в решении проблемы :-)

#Gets a list of all itunes folders 
$dirOfItunes = dir L:\Users\FolderRedirections -Recurse -Filter "iTunes Media" -ErrorAction silentlycontinue 

#print list of folders found to the screen 
Write-Host "list of itunes folders found: " 
ForEach ($A in $dirOfItunes) 
    { 
    write-host " " $A.fullname 
    } 

#Get the total size of each folder 
ForEach ($i in $dirOfItunes) 
{ 
    $UserItuneFolder = (Get-ChildItem $i.fullname -Recurse | Measure-Object -property length -sum) 
    Write-Host "Size of folders in bytes: " ([int] $UserItuneFolder.sum) 
    write-host "Folder name: " $i.FullName 
    "size of folder: " + "{0:N2}" -f ($UserItuneFolder.sum/1MB) + " MB" 

} 
+0

[Здесь] (http://svn.lando.us/joey/Public/SO/8729014/foo.ps1) - это очищенная версия этого скрипта. Я думал, что я заменил несколько бедных идиом PowerShell лучшими. Не забывайте, что вы имеете дело с объектами (и командлеты достаточно умны, чтобы понять это), и что у вас есть конвейер. – Joey