【发布时间】:2016-12-14 20:40:37
【问题描述】:
跟进这个问题:How to get a value in a foreach loop into a sum?
我有这个 Powershell 代码的 sn-p:
$TotalHomeDirSizeMB = 0
foreach ($user in $ListofUsers)
{
# Calculate sum of file sizes, grab Sum property value directly
$HomeDirSize = (Get-ChildItem $user.HomeDirectory -Recurse | Measure-Object -Property length -sum).Sum
# Calculate and store size in MB
$HomeDirSizeMB = "{0:N2}" -f ($HomeDirSize / 1MB)
# Add to cumulative size variable
$TotalHomeDirSizeMB += $HomeDirSizeMB
# Write results to screen + file
Write-Host "`r`n Size of:" $user.HomeDirectory
Write-Host ("{0:N2} MB" -f $HomeDirSizeMB)
"$($user.HomeDirectory) = $HomeDirSizeMB MB" | Out-File $LogFileName -Append
# Remove Home Directory
Remove-Item $user.HomeDirectory -Force -Recurse -ErrorAction SilentlyContinue
Write-Host "`r`n Removed HomeDirectory: " $user.HomeDirectory
# Wait for user to verify deletion from AD, preempt Confirmation if verified
Write-Host "`r`n Verifying you want to remove the user: " $user.Name -ForegroundColor Yellow -BackgroundColor Red
if ((Read-Host -Prompt "y for yes") -eq 'y'){
Remove-ADObject $user.DistinguishedName -Confirm:$false
}
}
Write-Host "Removed $TotalHomeDirSizeMB MB"
如果用户的主目录在此 AD 属性中为 NULL,我需要一种方法来处理不出错的脚本。
我以为它会是 foreach 下方的嵌入式 IF 语句,但我无法让 If 语句正常工作,我不断收到语法错误。
谁能协助说明 IF 语句是什么,以确保 foreach 代码仅在 HomeDirectory 具有值时运行?
【问题讨论】:
-
您好,请向我们展示您对
if块的尝试(编辑您的问题),这很容易,您很快就会得到帮助。 -
@sodawillow - 我在做 if {$_.HomeDirectory -ne $null} 但如果属性为空,它仍然会出错......不知道为什么
-
你需要括号
()而不是花括号{} -
哇!谢谢楼主
标签: powershell foreach null