У меня есть CSV-файл со сведениями о сотрудниках, и я хочу выполнить действия по созданию, изменению и отключению в зависимости от статуса сотрудника. В соответствии с CSV.
EmployeeCode,EmployeeID,EmployeName,Firstname,Lastname,Email,Designation,Department,State,ReportingManagerCode,Status
XA0001,1256,Srihari T,Srihari,T,srihari.t@contosso.com,Executive,Finance,Kerala,1258,New
XA0002,1257,Adam Varghese,Adam,Varghese,adam.varghese@contosso.com,TL,CC,Tamil Nadu,1210,Disabled
XA0003,1258,Shakti Velu,Shakti,Velu,shakti.velu@contosso.com,Manager,Finance,Kerala,1205,Existing
В соответствии со структурой подразделения.
contosso.com
Finance(OU=Finance,DC=contosso,DC=com)
CC(OU=CC,DC=contosso,DC=com)
Left(OU=Left,DC=contosso,DC=com)
Ожидаемое решение: если статус пользователя - «Новый», то пользователь создается в своем подразделении подразделения вместе с другими атрибутами . Статус «Отключено» Пользователи отключаются и переходят в левое подразделение. И статус «Существующий» пользователь обновляет свои атрибуты.
Для каждого действия у меня работает отдельный скрипт PowerShell, но я не могу объединить их в один скрипт, проверяя поле статуса.
- Может создавать пользователей, но не может найти статус «Новый», чтобы создать его.
Import-Module activedirectory
$ADUsers = Import-csv 'C:\IT\EmployeeDetails.csv'
foreach ($User in $ADUsers)
{
$Username = ($User.Firstname + '.' + $User.Lastname).ToLower()
$Firstname = $User.Firstname
$Lastname = $User.Lastname
$OU = 'OU=Finance,DC=contosso,DC=com'
$Email = $User.Email
$EmployeeID = $User.EmployeeID
$State = $User.State
$Designation = $User.Designation
$Department = $User.Department
$Password = (Get-RandomCharacters -characters AbcDeFgHiJkLmNoPqRsTuVwXyZ!@#*123456789 -length 8)
#Check to see if the user already exists in AD
if (Get-ADUser -F {SamAccountName -eq $Username})
{
Write-Warning "A user account with username $Username already exist in Active Directory."
}
else
{
New-ADUser `
-SamAccountName $Username `
-UserPrincipalName "$Username@contosso.com" `
-Name "$Firstname $Lastname" `
-GivenName $Firstname `
-Surname $Lastname `
-Enabled $True `
-DisplayName "$Firstname $Lastname" `
-Path $OU `
-EmployeeID $EmployeeID `
-State $State `
-EmailAddress $Email `
-Title $Designation `
-Department $Department `
-AccountPassword (convertto-securestring $Password -AsPlainText -Force) -ChangePasswordAtLogon $True
}
}
Отключает пользователя, но не может искать в статусе «Отключено», чтобы отключить и перейти в левое подразделение.
Import-Module activedirectory
$ADUsers = Import-csv C:\IT\EmployeeDetails.csv
foreach ($User in $ADUsers)
{
Get-ADUser -Filter "EmployeeID -eq '$($User.EmployeeID)'" |
Move-ADObject -TargetPath "OU=Left,DC=contosso,DC=com" -PassThru |
Disable-ADAccount
}
Изменить детали, но невозможно найти Статус как «Существующий», чтобы изменить его.
Import-Module activedirectory
$ADUsers = Import-Csv C:\IT\EmployeeDetails.csv
foreach ($User in $ADUsers)
{
Get-ADUser -Filter "EmployeeID -eq '$($User.EmployeeID)'" |
Set-ADUser -EmailAddress $User.Email -Title $User.Designation -Department $User.Department -State $User.State
}