Powershell CSV から AD アカウントを作成する - ユーザーのコピーの問題

Powershell CSV から AD アカウントを作成する - ユーザーのコピーの問題

CSV ファイルから AD に新しいユーザー アカウントを作成するためのスクリプトを作成しましたが、ユーザーのコピー部分に問題があります。すべての新しいユーザーにコピー ユーザーがある場合は機能しますが、コピー ユーザーを指定せずに空白のままにすると、変数の作成に失敗し、前の行のコピー ユーザー変数が使用されます。CSV ファイルでコピー ユーザー セルが入力されている場合にのみ、ユーザーのコピー部分を実行するようにこれを修正する方法はありますか?

$ADUsers = Import-Csv "C:\Bulk Create New Users\New Users.csv"
ForEach ($ADUsers 内の $User)
{
    $Server = "ドメインコントローラ"
    $FirstName = $User.FirstName
    $姓 = $ユーザー.姓
    $ExtraCharacter = $User.ExtraCharacter
    $Emailサフィックス = $User.Emailサフィックス
    $ビジネスユニット = $ユーザー.ビジネスユニット
    $JobTitle = $User.JobTitle
    $説明 = $ユーザー.説明
    $Company = $User.Company
    $Office = $User.Office
    $OU = $ユーザー.OU
    $パスワード = $ユーザー.パスワード
    $CopyUser = Get-ADUser -Identity $User.CopyUser -Properties MemberOf
    $IntranetGroup = $User.IntranetGroup
    $表示名 = $ユーザー.表示名
    $ユーザー名 = $User.ユーザー名
    $メール = $User.メール
    New-ADUser -Server $Server -Name $DisplayName -AccountPassword (ConvertTo-SecureString -AsPlainText $Password -Force) -Company $Company -Description $Description -DisplayName $DisplayName -EmailAddress $Email -Enabled $True -GivenName $FirstName -Office $Office -OtherAttributes @{'extensionAttribute10'=$Email;'mailNickname'=$Username} -Path $OU -SamAccountName $Username -Surname $Surname -Title $JobTitle -UserPrincipalName $Email
    Set-ADUser -Server $Server -Identity $Username -Add @{proxyAddresses ="SMTP:" + $Email}
    Add-ADPrincipalGroupMembership -Server $Server -Identity $Username -MemberOf "Standard","Member","Groups"

#Copy membership groups from the copy user to the new user & then remove the Equitrac group $CopyToNewUser = Get-ADUser -Server $Server -Identity $UserName -Properties MemberOf $CopyUser.MemberOf | Where-Object {$CopyToNewUser.MemberOf -notcontains $_} | Add-ADGroupMember -Server $Server -Members $CopyToNewUser Remove-ADPrincipalGroupMembership -Server $Server -Identity $UserName -MemberOf "Equitrac Print Users" -Confirm:$False}

答え1

  1. プロパティが.CopyUser空かどうか確認する
  2. Get-ADUser何かが返されたかどうかを確認します$User.CopyUser
$ADUsers = Import-Csv "C:\Bulk Create New Users\New Users.csv"
ForEach ($User in ($ADUsers|Where {$_.CopyUser -ne ''}) ) {
   if(!($CopyUser = Get-ADUser -Identity $User.CopyUser -Properties MemberOf)){continue}
   ...
}

関連情報