![Powershell 從 CSV 建立 AD 帳戶 - 複製使用者問題](https://rvso.com/image/1598528/Powershell%20%E5%BE%9E%20CSV%20%E5%BB%BA%E7%AB%8B%20AD%20%E5%B8%B3%E6%88%B6%20-%20%E8%A4%87%E8%A3%BD%E4%BD%BF%E7%94%A8%E8%80%85%E5%95%8F%E9%A1%8C.png)
我已經編寫了一個腳本,用於從 CSV 檔案在 AD 中建立新使用者帳戶,但複製使用者部分遇到一些問題。因此,當每個新用戶都有一個複製用戶,但當他們不提供複製用戶並且將其留空時,它就無法建立變數並使用上一行中的複製用戶變數。如果 csv 檔案中填寫了複製使用者儲存格,我該如何修改它以僅執行複製使用者部分?
$ADUsers = Import-Csv "C:\批次建立新使用者\新使用者.csv"
ForEach($ADUsers 中的 $User)
{
$伺服器=“網域控制站”
$名字 = $用戶.名字
$姓氏 = $用戶.姓氏
$ExtraCharacter = $User.ExtraCharacter
$EmailSuffix = $User.EmailSuffix
$BusinessUnit = $User.BusinessUnit
$JobTitle = $User.JobTitle
$描述 = $用戶.描述
$公司 = $用戶.公司
$Office = $User.Office
$OU = $用戶.OU
$密碼 = $用戶.密碼
$CopyUser = Get-ADUser -Identity $User.CopyUser -Properties MemberOf
$IntranetGroup = $User.IntranetGroup
$DisplayName = $User.DisplayName
$用戶名 = $用戶.用戶名
$電子郵件 = $使用者.電子郵件
New-ADUser -Server $Server -Name $DisplayName -AccountPassword (ConvertTo-SecureString -AsPlainText $Password -Force) -Company $Company -Description $Description -DisplayName $DisplayName -EmailAddress $Email -Enabled $True -GivenName $FirstName -Offfice $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“標準”、“成員”、“群組”
#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
- 檢查該屬性是否
.CopyUser
為空 - 檢查是否
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}
...
}