问题描述
我正在编写 Powershell 脚本,根据 CSV 的 $_.grade 字段中的数字将用户移动到正确的 OU。
当然,我们有 1-12 分的用户,他们在 Office 领域的成绩。在 AD 中,我们的 OU 下的学生只有小学、中学和高中。
我的目标是大量导入学生(我已经实现并且效果很好。)但随后还要根据他们的成绩移动他们。
主要 OU 是 00-04 年级
中OU是05-08年级
高 OU 是 09-12 年级
$Import.Add_Click( {
Import-CSV -Path $filename | ForEach {
Set-ADUser -Identity $_.user -Description $_.desc -Office $_.grade -replace @{UserType="Student"}
$information.text = "Description and UserType have been set."
Import-CSV -Path $filename | ForEach {Add-ADGroupMember -Identity "O365-StudentLicense" -Members $_.user}
$information.text = "All imported accounts Now have a mailBox."
}
})
这是我当前有效的代码。不过,并没有尝试让它真正按照我的意愿去做。
解决方法
您可以使用 Profile: Name: CompanyName1: CompanyName2: CompanyName3: JobTitle1: JobTitle2: JobTitle3: JobSummary1: JobSummary2: JobSummary3:
0 Profile_0 John Doe Firm A Firm B Firm C Capacity a Capacity b Capacity c Summary a Summary b Summary c
1 Profile_1 Jane Smith Firm X Firm Y Firm Z Capacity x Capacity y Capacity z Summary x Summary y Summary z
2 Profile_2 Mary Roe Firm P Firm Q NaN Capacity p Capacity q NaN Summary p Summary q NaN
通配符字符串比较运算符:
-like
Import-CSV -Path $filename | ForEach {
$OU = if($_.grade -like '0[0-4]'){
'Primary'
}
elseif($_.grade -like '0[5-8]'){
'Middle'
}
elseif($_.grade -like '09' -or $_.grade -like '1[0-2]'){
'High'
}
$OUPath = "OU=${OU} School,OU=Parent,DC=domain,DC=tld"
Move-ADObject -Identity $_.user -TargetPath $OUPath
}
表示“此范围内的任何字符”,因此 [0-4]
将匹配 0[0-4]
后跟 0
、0
、 1
、2
或 3