PowerShell - ссылка на переменную снаружи для цикла - PullRequest
0 голосов
/ 27 декабря 2018

Я, возможно, просто делаю это идиотским образом, но я пытаюсь вызвать переменную, которая находится вне цикла for с именем $ CSV, которая является импортированным файлом 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 и вывести ошибку.

1 Ответ

0 голосов
/ 27 декабря 2018

Вы слишком усложняете вещи:

  1. $Csv уже имеет свойство .count, нет необходимости в Measure-Object
  2. Значение for можно заменить на
$csv | ForEach-Object {$_.EmailAddress}

или

ForeEach ($Row in $Csv){ $Row.EmailAddress}
Чтобы развернуть $ Variable.Property внутри строки, используйте "$($Variable.Property)"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...