我可能只是以一种愚蠢的方式执行此操作,但是我试图调用位于$ CSV的for循环之外的变量,这是一个导入的CSV文件。
我认为我的语法错误。我知道当您在外部引用变量时,有时需要根据$ Name或$ .Name引用变量。但是这些似乎都不起作用。
Write-Host "Start Process"
$E3Stage2= New-MsolLicenseOptions -AccountSkuId EnvistaForensics:ENTERPRISEPACK -DisabledPlans BPOS_S_TODO_2, FORMS_PLAN_E3, STREAM_O365_E3, Deskless, FLOW_O365_P2, POWERAPPS_O365_P2, TEAMS1, PROJECTWORKMANAGEMENT, SWAY, INTUNE_O365, YAMMER_ENTERPRISE, MCOSTANDARD
$CSV = Import-csv "Input.csv"
$CSVStat = $CSV | Measure-Object
For ( $i=0; $i -lt $CSVStat.Count; $i++) {
Write-Host "Assigning License for user ---- $CSV.EmailAddress[$i]"
Set-MsolUserLicense -UserPrincipalName $CSV.EmailAddress[$i] -LicenseOptions $E3Stage2
}
Write-Progress "waiting six minutes" -Status "Please Wait"
Start-Sleep 360
For ( $i=0; $i -lt $CSVStat.Count; $i++) {
Write-Host "enabling litigation hold for user ---- $CSV.EmailAddress[$i]"
Set-Mailbox -identity $CSV.EmailAddress[$i] -LitigationHoldEnabled $true
}
Write-Host "Final User done script completed"
在for循环中找不到$ CSV并出错。
答案 0 :(得分:0)
您使事情变得过于复杂了
$Csv
已经具有.count属性,无需测量对象$csv | ForEach-Object {$_.EmailAddress}
或
ForeEach ($Row in $Csv){ $Row.EmailAddress}
"$($Variable.Property)"