70 lines
3.7 KiB
PowerShell
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"
|
|
}
|
|
}
|
|
}
|
|
}
|