Первая и самая главная проблема, о которой @boxdog упоминал в комментариях, заключается в том, что вы перебираете $AccountList
, а каждый элемент равен $Person
.Так что если вы хотите текущий элемент, вы должны использовать $person
.
Вторая проблема заключалась в определении $AccountName
с помощью $firstname
и $lastname
до того, как вы их определили.
В-третьих, вы просто $AccountList.pLocation
направляете в другой цикл.
В-четвертых, $Department -match "Call Center" -or "Retail"
всегда будет истинным, потому что $Department -match "Call Center"
и "Retail"
являются отдельными условными выражениями, а когда строка Retail
приводится к логическому значению, поскольку оно не пустое, оно всегда будет истинным.|
является регулярным выражением или оператором, в противном случае вам понадобится еще один оператор -match
после -or
.
Ваш сценарий также можно значительно упростить, используя splatting для определения параметров вHashtable, а затем передавая Hashtable в качестве параметров для вашей команды.
$AccountList = import-csv "C:\File\path\input.csv"
ForEach ($Person in $AccountList) {
$NewUserParams = @{
GivenName = $Person.pFirstName
Surname = $Person.pLastName
SamAccountName = "$($Person.pFirstName.Trim().ToLower()).$($Person.pLastName.Trim().ToLower())"
UserPrincipalName = "$($Person.pFirstName.Trim().ToLower()).$($Person.pLastName.Trim().ToLower())@company.com"
Name = "$($Person.pFirstName) $($Person.pLastName)"
DisplayName = "$($Person.pFirstName) $($Person.pLastName)"
Department = $Person.pDepartment
Office = $Person.pLocation
AccountPassword = (ConvertTo- SecureString -AsPlainText "X" -Force)
ChangePasswordAtLogon = $True
Enabled = $True
PasswordNeverExpires = $False
Path = "CN=Users,DC=medsinmotion,DC=local"
}
New-ADUser @NewUserParams
$NewMsolUserParams = @{
FirstName = $NewUserParams.GivenName
LastName = $NewUserParams.Surname
UserPrincipalName = $NewUserParams.UserPrincipalName
DisplayName = $NewUserParams.displayname
Department = $NewUserParams.Department
UsageLocation = 'US'
LicenseAssignment = 'reseller-account:DESKLESSPACK'
ForceChangePassword = $True
}
New-MsolUser @NewMsolUserParams
if ($NewMsolUserParams.Department -match "Call Center|Retail") {
Add-MailboxPermission -Identity CallCenter -User $NewUserParams.SamAccountName -AccessRights FullAccess
Add-DistributionGroupMember -Identity callctr@company.com -Member $NewUserParams.SamAccountName
} Else {
Set-MsolUserLicense -UserPrincipalname $NewUserParams.UserPrincipalName -AddLicenses O365_BUSINESS_PREMIUM -RemoveLicenses reseller-account:DESKLESSPACK
}
Add-DistributionGroupMember -Identity all -Member $NewUserParams.UserPrincipalName
}