New scripter with hopefully an easy proofread.
I made an Powershell Active Directory script that processes people on Leave of Absence (LOA) within my organization from a daily CSV file I get.
In summary my problem segment should:
- Check the $Line variable's currentStatus if that employee is "On Leave"
- Disable that Active Directory account.
- Grab that AD account's 'Description' field and look for the string part "LOA - " and add that ONLY if it is missing. Problem is that if that field already has "LOA - " in the description, it puts another one... and another, so on.
Example:
- Description (Good): LOA - Chef
- Description (Bad): LOA - LOA - Chef
- Description (Please NO): LOA - LOA - LOA - Chef
- Etc.
I'm fairly certain the problem is with this line here but I can't figure out how to fix it.
If ($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
}
}
Aucun commentaire:
Enregistrer un commentaire