下面的PowerShell脚本应测量远程计算机上的文件夹大小,但显然$ -Desktop变量值以某种方式被Get-ChildItem忽略,我得到0.00 MB。但是当我用显式字符串即$“C:\ Users \ user1 \ Desktop”替换$ Desktop时,它正常工作,我得到例如10 MB。难道我做错了什么?
$file1="C:\computers_users.csv"
import-csv $file1 | ForEach-Object{
$Desktop = "C:\Users\$($_.user)\Desktop"
Invoke-Command -ComputerName $_.computer -ScriptBlock {
$FldSize =(Get-ChildItem $Desktop -recurse | Measure-Object -property length -sum)
"{0:N2}" -f ($FldSize.sum / 1MB) + " MB"}
}
最佳答案
试试这个:
Invoke-Command -ComputerName $_.computer -ScriptBlock {
$FldSize =(Get-ChildItem $args[0] -recurse | Measure-Object -property length -sum)
"{0:N2}" -f ($FldSize.sum / 1MB) + " MB"} -argumentlist $desktop
您需要使用
-argumentlist
传递参数,因为invoke命令会创建一个新的Powershell session ,而该 session 不知道调用 session 变量。关于powershell - PowerShell:Get-ChildItem忽略的字符串变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17018920/