Powershell使用调用命令会话来获取远程计算机上子项的大小



我正在尝试使用powershell远程访问计算机并获取文件夹中每个子目录的大小。

我正在使用脚本来获取每个文件夹的大小,它成功地工作:

$log = "F:logfile.txt" 
$startFolder = "C:"
$colItems = Get-ChildItem $startFolder  | Where-Object {$_.PSIsContainer -eq $True} | Sort-Object
foreach ($i in $colItems){
   $itemSum = Get-ChildItem ("$startFolder" + $i.Name) -recurse | Measure-Object -property length -sum
   "$startFolder$i -- " + "{0:N2}" -f ($itemSum.sum / 1MB) + " MB" >> $log
   }

这就是我如何尝试使用调用命令合并它,它没有产生任何结果。

#login info
$username = "domainuser"
$password = 'password'
$log = "C:logfile.txt" 
$startFolder = "comp-namee"
#setup login credentials
$secstr = New-Object -TypeName System.Security.SecureString
$password.ToCharArray() | ForEach-Object {$secstr.AppendChar($_)}
$cred = new-object -typename System.Management.Automation.PSCredential -argumentlist $username, $secstr
$session = new-pssession "comp-name" -Credential $cred
Invoke-Command -Session $session -ScriptBlock {$colItems = Get-ChildItem $startFolder  | Where-Object {$_.PSIsContainer -eq $True} | Sort-Object
foreach ($i in $colItems){
   $itemSum = Get-ChildItem ("$startFolder" + $i.Name) -recurse | Measure-Object -property length -sum
   "$startFolder$i -- " + "{0:N2}" -f ($itemSum.sum / 1GB) + " GB" >> $log
   }
   }

我已经完成了在两台计算机上启用ps-remoting的步骤。

提前感谢您的帮助!

变量$startFolder需要被传递到scriptblock中,例如:

Invoke-Command -Session $session -ScriptBlock {param($path,$log) 
    $colItems = Get-ChildItem $path | Where-Object {$_.PSIsContainer} | Sort-Object
    foreach ($i in $colItems) {
        $itemSum = Get-ChildItem "$path$($i.Name)" -recurse | Measure-Object -property length -sum
        "$startFolder$i -- " + "{0:N2}" -f ($itemSum.sum / 1GB) + " GB" >> $log
    }
} -Arg $startFolder,$logFilePath

我能够得到这个工作(没有重定向到日志文件):

23# Invoke-Command acme -ScriptBlock {param($path)
>>>     $colItems = Get-ChildItem $path | Where-Object {$_.PSIsContainer} | Sort-Object
>>>     foreach ($i in $colItems) {
>>>         $itemSum = Get-ChildItem $i.FullName -recurse | Measure-Object -property length -sum
>>>         "$startFolder$i -- " + "{0:N2}" -f ($itemSum.sum / 1MB) + " MB"
>>>     }
>>> } -Arg c:bin
>>>
Orca -- 3.63 MB
Reg -- 0.06 MB
Src -- 0.25 MB
sym -- 19.09 MB
x64 -- 0.71 MB

最新更新