使用 Powershell 脚本导入 excel sheet,将列转换为变量,为有权访问共享邮箱的用户创建电子邮件
Import excel sheet with Powershell script, turn columns into variables to create emails for users with access to shared mailboxes
我创建了以下脚本来为用户创建电子邮件,并根据他们所属的部门将所述用户添加到特定的共享邮箱。到目前为止,此脚本已成功创建用户,但并未将其添加到所需的共享邮箱。有没有办法在一个脚本中执行此操作,还是我必须坚持使用单独的脚本。一种是为用户创建电子邮件,另一种是将该用户放入共享邮箱?
Import-Csv -Path "C:\AddingUser.csv" | foreach {New-MsolUser -DisplayName $_.DisplayName -FirstName $_.FirstName -LastName $_.LastName -UserPrincipalName $_.UserPrincipalName -PhoneNumber $_.PhoneNumber -Department $_.Department -Title $_.Title -UsageLocation $_.UsageLocation -Password $_.Password | set-msoluserlicense -AddLicenses STANDARDPACK}
$Person = $_.DisplayName
$Dept = $_.Department
if ( $Dept -eq 'Scheduling' )
{
Add-MailboxPermission -Identity "Scheduling" -AccessRights FullAccess -InheritanceType All –User $Person;
Add-MailboxPermission -Identity "Renewals" -AccessRights FullAccess -InheritanceType All –User $Person;
Add-MailboxPermission -Identity "Scans" -AccessRights FullAccess -InheritanceType All –User $Person;
}
elseif ( $Dept -eq 'Customer Care')
{
Add-MailboxPermission -Identity "Renewals" -AccessRights FullAccess -InheritanceType All –User $Person;
Add-MailboxPermission -Identity "AP CustomerService" -AccessRights FullAccess -InheritanceType All –User $Person;
Add-MailboxPermission -Identity "Scans" -AccessRights FullAccess -InheritanceType All –User $Person;
}
用户未添加到共享邮箱的原因是您使用的 $_
变量不正确。
$_
变量只能与管道输出结合使用。在这种情况下,当您分配 $Person
和 $Dept
时,它们的值将设置为空,因为 $_.DisplayName
和 $_.Department
在上面的 ForEach-Object 块之外不存在。由于 $Person
和 $Dept
为空,因此您的 if 块永远不会 运行.
我已经将脚本更新为我将如何完成您的任务。
$users = Import-Csv -Path "C:\AddingUser.csv"
foreach($user in $users)
{
# Splat the params for easier reading
$msol_params = @{
DisplayName = $user.DisplayName
FirstName = $user.FirstName
LastName = $user.LastName
UserPrincipalName = $user.UserPrincipalName
PhoneNumber = $user.PhoneNumber
Department = $user.Department
Title = $user.Title
UsageLocation = $user.UsageLocation
Password = $user.Password
}
New-MsolUser @msol_params | Set-MsolUserLicense -AddLicenses STANDARDPACK
# switch instead of ifelse to simplify adding new departments
switch($user.Department)
{
'Scheduling' {
Add-MailboxPermission -Identity "Scheduling" -AccessRights FullAccess -InheritanceType All –User $user.DisplayName
Add-MailboxPermission -Identity "Renewals" -AccessRights FullAccess -InheritanceType All –User $user.DisplayName
Add-MailboxPermission -Identity "Scans" -AccessRights FullAccess -InheritanceType All –User $user.DisplayName
}
'Customer Care' {
Add-MailboxPermission -Identity "Renewals" -AccessRights FullAccess -InheritanceType All –User $user.DisplayName
Add-MailboxPermission -Identity "AP CustomerService" -AccessRights FullAccess -InheritanceType All –User $user.DisplayName
Add-MailboxPermission -Identity "Scans" -AccessRights FullAccess -InheritanceType All –User $user.DisplayName
}
Default {
Write-Error -Message "Invalid Department for user: $($user.DisplayName)"
}
}
}
我创建了以下脚本来为用户创建电子邮件,并根据他们所属的部门将所述用户添加到特定的共享邮箱。到目前为止,此脚本已成功创建用户,但并未将其添加到所需的共享邮箱。有没有办法在一个脚本中执行此操作,还是我必须坚持使用单独的脚本。一种是为用户创建电子邮件,另一种是将该用户放入共享邮箱?
Import-Csv -Path "C:\AddingUser.csv" | foreach {New-MsolUser -DisplayName $_.DisplayName -FirstName $_.FirstName -LastName $_.LastName -UserPrincipalName $_.UserPrincipalName -PhoneNumber $_.PhoneNumber -Department $_.Department -Title $_.Title -UsageLocation $_.UsageLocation -Password $_.Password | set-msoluserlicense -AddLicenses STANDARDPACK}
$Person = $_.DisplayName
$Dept = $_.Department
if ( $Dept -eq 'Scheduling' )
{
Add-MailboxPermission -Identity "Scheduling" -AccessRights FullAccess -InheritanceType All –User $Person;
Add-MailboxPermission -Identity "Renewals" -AccessRights FullAccess -InheritanceType All –User $Person;
Add-MailboxPermission -Identity "Scans" -AccessRights FullAccess -InheritanceType All –User $Person;
}
elseif ( $Dept -eq 'Customer Care')
{
Add-MailboxPermission -Identity "Renewals" -AccessRights FullAccess -InheritanceType All –User $Person;
Add-MailboxPermission -Identity "AP CustomerService" -AccessRights FullAccess -InheritanceType All –User $Person;
Add-MailboxPermission -Identity "Scans" -AccessRights FullAccess -InheritanceType All –User $Person;
}
用户未添加到共享邮箱的原因是您使用的 $_
变量不正确。
$_
变量只能与管道输出结合使用。在这种情况下,当您分配 $Person
和 $Dept
时,它们的值将设置为空,因为 $_.DisplayName
和 $_.Department
在上面的 ForEach-Object 块之外不存在。由于 $Person
和 $Dept
为空,因此您的 if 块永远不会 运行.
我已经将脚本更新为我将如何完成您的任务。
$users = Import-Csv -Path "C:\AddingUser.csv"
foreach($user in $users)
{
# Splat the params for easier reading
$msol_params = @{
DisplayName = $user.DisplayName
FirstName = $user.FirstName
LastName = $user.LastName
UserPrincipalName = $user.UserPrincipalName
PhoneNumber = $user.PhoneNumber
Department = $user.Department
Title = $user.Title
UsageLocation = $user.UsageLocation
Password = $user.Password
}
New-MsolUser @msol_params | Set-MsolUserLicense -AddLicenses STANDARDPACK
# switch instead of ifelse to simplify adding new departments
switch($user.Department)
{
'Scheduling' {
Add-MailboxPermission -Identity "Scheduling" -AccessRights FullAccess -InheritanceType All –User $user.DisplayName
Add-MailboxPermission -Identity "Renewals" -AccessRights FullAccess -InheritanceType All –User $user.DisplayName
Add-MailboxPermission -Identity "Scans" -AccessRights FullAccess -InheritanceType All –User $user.DisplayName
}
'Customer Care' {
Add-MailboxPermission -Identity "Renewals" -AccessRights FullAccess -InheritanceType All –User $user.DisplayName
Add-MailboxPermission -Identity "AP CustomerService" -AccessRights FullAccess -InheritanceType All –User $user.DisplayName
Add-MailboxPermission -Identity "Scans" -AccessRights FullAccess -InheritanceType All –User $user.DisplayName
}
Default {
Write-Error -Message "Invalid Department for user: $($user.DisplayName)"
}
}
}