【发布时间】:2021-01-01 01:51:17
【问题描述】:
新的脚本编写者希望能够轻松校对。
我制作了一个 Powershell Active Directory 脚本,该脚本根据我获得的每日 CSV 文件处理组织内的休假 (LOA) 人员。
总的来说,我的问题部分应该:
- 如果员工“休假”,请检查 $Line 变量的 currentStatus
- 禁用该 Active Directory 帐户。
- 获取该 AD 帐户的“描述”字段并查找字符串部分“LOA -”并仅在缺失时添加。问题是如果该字段中已经包含“LOA -”描述,它放了另一个……和另一个,依此类推。
例子:
- 描述(良好):LOA - 厨师
- 描述(错误):LOA - LOA - 厨师
- 描述(请不要):LOA - LOA - LOA - 厨师
- 等
我很确定问题出在这条线上,但我不知道如何解决它。
如果 ($null -ne ($newDescript | ? {$loaPhrases -notcontains $_}))
$loaPhrases = "LOA -|LOA-|LOA - |LOA- |LOA - LOA - "
ElseIf ($Line.currentStatus -eq "ON LEAVE")
{
#Add 'LOA - ' to description and disable AD
Set-ADUser $User.samAccountName -Enabled 0
'Disabled AD'
$Description = Get-ADUser $User.samAccountName -Properties Description | Select-Object -ExpandProperty Description
$newDescript = $Description.substring(0, $Description.IndexOf('-')+1)
If ($null -ne ($newDescript | ? {$loaPhrases -notcontains $_}))
{
$Description = "LOA - " + "$Description"
$Description = $Description.trim()
Set-ADUser $user.samAccountName -Description $Description
}
}
【问题讨论】:
-
您是否总是希望“LOA”开始描述?我同意@Guy S 的评估,但您可能需要改进 RegEx,
标签: powershell if-statement syntax active-directory