0

Get-Content を使用して、ファイルの各行に基づいてディレクトリ パス名を入力する変数を作成しようとしています。

.csv ファイルに長いユーザー リストがあり、それぞれのユーザー名をチェックしてディレクトリ サイズを取得したいと考えています。

$username 変数を削除し、$startdirectory の末尾にユーザー名を手動で入力すると、スクリプトが機能します。

$username = Get-Content 'C:\Scripts\AvayaUsers.csv'
$startDirectory = '\\xx\xxxx\xxxxxxxxxxx\users\$username'
 
$directoryItems = Get-ChildItem $startDirectory | Where-Object {$_.PSIsContainer -eq $true} | Sort-Object
 
foreach ($i in $directoryItems)
{
    $subFolderItems = Get-ChildItem $i.FullName -recurse -force | Where-Object {$_.PSIsContainer -eq $false} | Measure-Object -property Length -sum | Select-Object Sum
    $i.FullName + " -- " + "{0:N2}" -f ($subFolderItems.sum / 1GB) + " GB"
}
4

2 に答える 2

1

基本的に$username全体を変数として割り当てるようにスクリプトに指示しており、それをループ処理しません。

これは、すべてのユーザーを含む変数全体が$startDirectoryに割り当てられることを意味します。このスクリプトは、CSV 内の 1 人のユーザーのみで機能すると確信しています。

CSV に含まれる各ユーザーをforeachでループし、合計してファイル サイズを取得する必要があります。

于 2021-04-13T00:08:55.047 に答える