使用 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)"
        }
    }
}