PDA

Показать полную графическую версию : [решено] Вопрос по перебору ForEach


sacredboy
10-04-2017, 15:39
Есть такой скрипт,
$csvfile = 'C:\Scripts\newadusers.csv'
$OU = 'ou=Romashka Users,dc=romashka,dc=loc'

$users = Import-CSV $csvfile

Foreach ($i in $users)
{
$DisplayName = $i.FirstName + " " + $i.LastName
$SecurePass = ConvertTo-SecureString $i.DefaultPassword -AsPlainText -Force
New-ADUser -Name $DisplayName -GivenName $i.FirstName -Surname $i.LastName -DisplayName $DisplayName `
-SamAccountName $i.SamAccountName -UserPrincipalName $i.UserPrincipalName `
-Department $i.Department -Path $OU -AccountPassword $SecurePass -Enabled $true `
-ChangePasswordAtLogon $true
}

который обращется к csv файлу,
FirstName,LastName,Department,SamAccountName,UserPrincipalName,DefaultPassword
Ivan,Ivanov,Romashka,IIvanov,IIvanov@romashka.loc,P@ssw0rd
Petr,Petrov,Romashka,PPetrov,PPetrov@romashka.loc,P@ssw0rd
Mikhail,Mikhailov,Romashka,MMikhailov,MMikhailov@romashka.loc,P@ssw0rd
Объясните пожалуйста откуда скрипт берет значение переменной $i?

Kazun
10-04-2017, 15:56
Прочитать справку:
https://msdn.microsoft.com/ru-ru/powershell/reference/5.1/microsoft.powershell.core/about/about_foreach или на русском https://technet.microsoft.com/ru-ru/library/hh847816.aspx

Синтаксис
Ниже показан синтаксис оператора ForEach.
foreach ($<item> in $<collection>){<statement list>}


В скрипте создается массив $users, который затем инициализируется из файла csv. При первом выполнении оператора Foreach переменная $i устанавливается равной первому элементу в массиве $users:

FirstName : Ivan
LastName : Ivanov
Department : Romashka
SamAccountName : IIvanov
UserPrincipalName : IIvanov@romashka.loc
DefaultPassword : P@ssw0rd

). Затем создается объект пользователя в AD. При следующей итерации цикла переменной $i присваивается значение:

FirstName : Petr
LastName : Petrov
Department : Romashka
SamAccountName : PPetrov
UserPrincipalName : PPetrov@romashka.loc
DefaultPassword : P@ssw0rd

и т. д. После того как цикл Foreach создаст объект пользователя в AD:

FirstName : Mikhail
LastName : Mikhailov
Department : Romashka
SamAccountName : MMikhailov
UserPrincipalName : MMikhailov@romashka.loc
DefaultPassword : P@ssw0rd

, Windows PowerShell выходит из цикла.




© OSzone.net 2001-2012