Files

70 lines
3.7 KiB
PowerShell

# Creation des Utilisateurs locaux
$Scriptlocation = Split-Path -Path $MyInvocation.MyCommand.Path
$computerName = "$env:computername"
$computer = [ADSI]"WinNT://$computerName,computer"
$Users = $computer.PSbase.Children | Where { $_.psbase.SchemaClassName -eq 'user' } | Select-Object -ExpandProperty name
$NewAdministrateurAccountName = "supporthdf"
$Adminlyc_Account_name = "adminlyc"
[string[]]$Utilisateurs = @($NewAdministrateurAccountName, $Adminlyc_Account_name)
foreach ($utilisateur in $Utilisateurs) {
if (($utilisateur -eq $NewAdministrateurAccountName) -and ($utilisateur -notin $users)) {
# Création du compte d'utilisateur "supporthdf"
$Administrateur = [adsi]"WinNT://$computerName/Administrateur,user"
$Administrateur.psbase.rename($NewAdministrateurAccountName)
$Suser = [adsi]"WinNT://$computerName/supporthdf,user"
$SCryptPwd = get-content "$Scriptlocation\supporthdf-CryptPwd.txt"
$SCle = [Convert]::FromBase64String((get-content "$Scriptlocation\Key.txt"))
$SPword = ConvertTo-SecureString -Key $SCle -string $SCryptPwd
$SUser.SetPassword([System.Runtime.InteropServices.Marshal]::PtrToStringAuto([System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($SPword)))
$SUser.psbase.InvokeSet('UserFlags', 65536) # UserFlags Value for the account to be active with a password set to never expire.
$SUser.psbase.InvokeSet("Description", "Compte d'utilisateur d'administration de la région")
$SUser.SetInfo()
}
elseif (($utilisateur -eq $Adminlyc_Account_name) -and ($utilisateur -notin $users)) {
# Création du compte d'utilisateur "adminlyc"
$User_adminlyc = $computer.Create("user", $Adminlyc_Account_name)
$User_adminlyc_CryptPwd = get-content "$Scriptlocation\adminlyc-CryptPwd.txt"
$User_adminlyc_Cle = [Convert]::FromBase64String((get-content "$Scriptlocation\Key.txt"))
$User_adminlyc_Pword = ConvertTo-SecureString -Key $User_adminlyc_Cle -string $User_adminlyc_CryptPwd
$User_adminlyc.SetPassword([System.Runtime.InteropServices.Marshal]::PtrToStringAuto([System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($User_adminlyc_Pword)))
$User_adminlyc.psbase.InvokeSet('UserFlags', 66112) # ADS_UF_NORMAL_ACCOUNT + ADS_UF_PASSWD_CANT_CHANGE + ADS_UF_DONT_EXPIRE_PASSWD
$User_adminlyc.psbase.InvokeSet("Description", "Compte d'utilisateur d'administration du lycée")
$User_adminlyc.SetInfo()
}
else {
write-host "$utilisateur existe déjà"
}
}
# Ajout des utilisateurs dans les groupes de sécurité
[string[]]$GroupsSID = @('S-1-5-32-544', 'S-1-5-32-545', 'S-1-5-32-555', 'S-1-5-32-580')
foreach ($GroupSID in $GroupsSID) {
$SID = New-Object System.Security.Principal.SecurityIdentifier ("$GroupSID")
$Group = $SID.Translate([System.Security.Principal.NTAccount])
$GroupName = Split-Path -leaf ($Group.Value)
[string[]]$ADSPathMembers = @((Get-LocalGroupMember -SID $GroupSID).Name)
if ($ADSPathMembers -ne $null) {
[string[]]$Members = Split-Path -leaf $ADSPathMembers -ErrorAction SilentlyContinue
}
foreach ($utilisateur in $Utilisateurs) {
if (($Utilisateur -eq $NewAdministrateurAccountName) -or ($Utilisateur -eq $Adminlyc_Account_name)) {
if ($utilisateur -notin $Members) {
Write-host "L'utilisateur $utilisateur n'appartient pas au groupe $GroupName, Je l'ajoute..."
([ADSI]"WinNT://$computerName/$GroupName,group").Add("WinNT://$Utilisateur")
}
else {
write-host "L'utilisateur $utilisateur appartient déja au groupe $GroupName"
}
}
}
}