Question
[Résolu] Déploiement compte admin local server
- baptiste
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 6
- Remerciements reçus 0
il y a 8 ans 6 mois #24211
par baptiste
[Résolu] Déploiement compte admin local server a été créé par baptiste
Bonjour,
Je suis confronté à un problème et mes connaissances étant limitées je fait appel à vous.
J'ai un AD sous windows serveur 2012 r2, et on me demande de déployer sur toutes les machines du réseau une session locale, qui soit administrateur et sans que le mot de passe ne soit envoyé en clair.
Si possible on aimerait éviter d'avoir à déployer des logiciels sur les postes clients comme le propose LAPS.
Créer une GPO pour cela n'est maintenant plus possible, car le mot de passe ne peux plus être envoyé via les GPO (bloqué par Microsoft).
Je pensait passer par un script qui me créerais un fichier avec le mot de passe crypté que je mettrais dans un dossier partagé avec des droits restreints pour que seuls les administrateurs du domaine et le système puissent y avoir accès, et de déployer par gpo un script qui décrypterais le fichier du mot de passe et qui aurais créé dans la foulée un compte administrateur local.
J'ai passé une journée de recherche sur tout type de sites, j'ai testé plusieurs scripts trouvés et modifié avec les informations d'un réseau virtuel, mais rien ne fonctionne vraiment.
Voici un exemple d'un script qui se rapproche le plus de ce que je recherche:
script de création du mot de passe crypté:
[code:1]
$LocalAdminPW = \"azerty@1\" #the password that is used to set as the local admin password
$EncryptionPW = \"azerty@2\" #password to encrypt and decrypt the password
$File = \"C:\Temp\Password.tsv\" #file to create
#Create encryption key
$Sha256 = new-object System.Security.Cryptography.SHA256CryptoServiceProvider
$SecureStringKey = $Sha256.ComputeHash([System.Text.UnicodeEncoding]::Unicode.GetBytes($EncryptionPW))
#Encrypt the password with the user supplied encryption password
$PasswordSecureString = ConvertTo-SecureString -AsPlainText -Force -String $LocalAdminPW
#Create TSV-File with the encrypted password
ConvertFrom-SecureString -Key $SecureStringKey -SecureString $PasswordSecureString | Out-File -Force -FilePath \"$File\"
#Gathering the new encrypted password for the local administrator account
$LocalAdminPW = Get-Content $File
[/code:1]
script de décryptage et de création de l'utilisateur:
[code:1]
#function to get decrypted password
Function Get-DecryptedPassword {
[CmdletBinding()]
param(
$EncryptedPW,
$LocalAdminPW
)
#Decrypt the password with the user supplied encryption password
$Sha256 = new-object System.Security.Cryptography.SHA256CryptoServiceProvider
$SecureStringKey = $Sha256.ComputeHash([System.Text.UnicodeEncoding]::Unicode.GetBytes($EncryptionPW))
[SecureString]$SecureStringPassword = ConvertTo-SecureString -String $LocalAdminPW -Key $SecureStringKey
return ([System.Runtime.InteropServices.Marshal]::«»PtrToStringAuto([System.Runtime.InteropServices.Marshal]::«»SecureStringToCoTaskMemUnicode($SecureStringPassword)))
}
#Change password local admin account
$userAccount = \"admin-local\"
$objUser.psbase.Invoke(\"SetPassword\", (Get-DecryptedPassword -EncryptedPW $EncryptionPW -LocalAdminPW $LocalAdminPW))
$vm = [ADSI]\"WinNT://$env:computername,computer\"
$group = [ADSI]\"WinNT://$env:computername/administrators,group\"
$count = 0
$userAccounts | ForEach-Object {
$User = $vm.Create(\"User\",\"$_\"«»)
$User.SetPassword($passwords[$count])
$User.SetInfo()
$group.Add(\"WinNT://$env:computername/$_,Administrateurs\"«»)
$count++
}
#$LocalAdmin = \"Administrateur\"
#$objUser = [ADSI]\"WinNT://localhost/$($LocalAdmin), user\"
#$objUser.psbase.Invoke(\"SetPassword\", (Get-DecryptedPassword -EncryptedPW $EncryptionPW -LocalAdminPW $LocalAdminPW))
[/code:1]
3 lignes me font des erreurs, quand je test les scripts avant de les intégrers dans une GPO:
la ligne:
[code:1]
$objUser.psbase.Invoke(\"SetPassword\", (Get-DecryptedPassword -EncryptedPW $EncryptionPW -LocalAdminPW $LocalAdminPW))
[/code:1]
me fait l'erreur:
Impossible d’appeler une méthode dans une expression Null.
Au caractère C:\Users\test1\Desktop\decryptPassCreateAdmin.ps1:19 : 1
+ $objUser.psbase.Invoke(\"SetPassword\", (Get-DecryptedPassword -Encrypt ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation : (
[], RuntimeException
+ FullyQualifiedErrorId : InvokeMethodOnNull
la ligne:
[code:1]
$User.SetInfo()
[/code:1]
me fait l'erreur:
Exception lors de l'appel de «SetInfo» avec «0» argument(s): «Ce mot de passe ne correspond pas aux critères de stratégie de mot de passe. Vérifiez la longueur de mot de
passe minimale, la complexité du mot de passe et l’historique des critères de mots de passe.
»
Au caractère C:\Users\test1\Desktop\decryptPassCreateAdmin.ps1:28 : 5
+ $User.SetInfo()
+ ~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (
[], MethodInvocationException
+ FullyQualifiedErrorId : CatchFromBaseAdapterMethodInvokeTI
la ligne:
[code:1]
$group.Add(\"WinNT://$env:computername/$_,Administrateurs\"«»)
[/code:1]
me fait l'erreur:
L'exception suivante s'est produite lors de la récupération du membre « Add » : « Le nom de groupe est introuvable.
»
Au caractère C:\Users\test1\Desktop\decryptPassCreateAdmin.ps1:29 : 5
+ $group.Add(\"WinNT://$env:computername/$_,Administrateurs\")
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (
[], ExtendedTypeSystemException
+ FullyQualifiedErrorId : CatchFromBaseGetMember
Merci pour votre aide
<br><br>Message édité par: Arnaud, à: 27/09/17 11:26
Je suis confronté à un problème et mes connaissances étant limitées je fait appel à vous.
J'ai un AD sous windows serveur 2012 r2, et on me demande de déployer sur toutes les machines du réseau une session locale, qui soit administrateur et sans que le mot de passe ne soit envoyé en clair.
Si possible on aimerait éviter d'avoir à déployer des logiciels sur les postes clients comme le propose LAPS.
Créer une GPO pour cela n'est maintenant plus possible, car le mot de passe ne peux plus être envoyé via les GPO (bloqué par Microsoft).
Je pensait passer par un script qui me créerais un fichier avec le mot de passe crypté que je mettrais dans un dossier partagé avec des droits restreints pour que seuls les administrateurs du domaine et le système puissent y avoir accès, et de déployer par gpo un script qui décrypterais le fichier du mot de passe et qui aurais créé dans la foulée un compte administrateur local.
J'ai passé une journée de recherche sur tout type de sites, j'ai testé plusieurs scripts trouvés et modifié avec les informations d'un réseau virtuel, mais rien ne fonctionne vraiment.
Voici un exemple d'un script qui se rapproche le plus de ce que je recherche:
script de création du mot de passe crypté:
[code:1]
$LocalAdminPW = \"azerty@1\" #the password that is used to set as the local admin password
$EncryptionPW = \"azerty@2\" #password to encrypt and decrypt the password
$File = \"C:\Temp\Password.tsv\" #file to create
#Create encryption key
$Sha256 = new-object System.Security.Cryptography.SHA256CryptoServiceProvider
$SecureStringKey = $Sha256.ComputeHash([System.Text.UnicodeEncoding]::Unicode.GetBytes($EncryptionPW))
#Encrypt the password with the user supplied encryption password
$PasswordSecureString = ConvertTo-SecureString -AsPlainText -Force -String $LocalAdminPW
#Create TSV-File with the encrypted password
ConvertFrom-SecureString -Key $SecureStringKey -SecureString $PasswordSecureString | Out-File -Force -FilePath \"$File\"
#Gathering the new encrypted password for the local administrator account
$LocalAdminPW = Get-Content $File
[/code:1]
script de décryptage et de création de l'utilisateur:
[code:1]
#function to get decrypted password
Function Get-DecryptedPassword {
[CmdletBinding()]
param(
$EncryptedPW,
$LocalAdminPW
)
#Decrypt the password with the user supplied encryption password
$Sha256 = new-object System.Security.Cryptography.SHA256CryptoServiceProvider
$SecureStringKey = $Sha256.ComputeHash([System.Text.UnicodeEncoding]::Unicode.GetBytes($EncryptionPW))
[SecureString]$SecureStringPassword = ConvertTo-SecureString -String $LocalAdminPW -Key $SecureStringKey
return ([System.Runtime.InteropServices.Marshal]::«»PtrToStringAuto([System.Runtime.InteropServices.Marshal]::«»SecureStringToCoTaskMemUnicode($SecureStringPassword)))
}
#Change password local admin account
$userAccount = \"admin-local\"
$objUser.psbase.Invoke(\"SetPassword\", (Get-DecryptedPassword -EncryptedPW $EncryptionPW -LocalAdminPW $LocalAdminPW))
$vm = [ADSI]\"WinNT://$env:computername,computer\"
$group = [ADSI]\"WinNT://$env:computername/administrators,group\"
$count = 0
$userAccounts | ForEach-Object {
$User = $vm.Create(\"User\",\"$_\"«»)
$User.SetPassword($passwords[$count])
$User.SetInfo()
$group.Add(\"WinNT://$env:computername/$_,Administrateurs\"«»)
$count++
}
#$LocalAdmin = \"Administrateur\"
#$objUser = [ADSI]\"WinNT://localhost/$($LocalAdmin), user\"
#$objUser.psbase.Invoke(\"SetPassword\", (Get-DecryptedPassword -EncryptedPW $EncryptionPW -LocalAdminPW $LocalAdminPW))
[/code:1]
3 lignes me font des erreurs, quand je test les scripts avant de les intégrers dans une GPO:
la ligne:
[code:1]
$objUser.psbase.Invoke(\"SetPassword\", (Get-DecryptedPassword -EncryptedPW $EncryptionPW -LocalAdminPW $LocalAdminPW))
[/code:1]
me fait l'erreur:
Impossible d’appeler une méthode dans une expression Null.
Au caractère C:\Users\test1\Desktop\decryptPassCreateAdmin.ps1:19 : 1
+ $objUser.psbase.Invoke(\"SetPassword\", (Get-DecryptedPassword -Encrypt ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation : (
+ FullyQualifiedErrorId : InvokeMethodOnNull
la ligne:
[code:1]
$User.SetInfo()
[/code:1]
me fait l'erreur:
Exception lors de l'appel de «SetInfo» avec «0» argument(s): «Ce mot de passe ne correspond pas aux critères de stratégie de mot de passe. Vérifiez la longueur de mot de
passe minimale, la complexité du mot de passe et l’historique des critères de mots de passe.
»
Au caractère C:\Users\test1\Desktop\decryptPassCreateAdmin.ps1:28 : 5
+ $User.SetInfo()
+ ~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (
+ FullyQualifiedErrorId : CatchFromBaseAdapterMethodInvokeTI
la ligne:
[code:1]
$group.Add(\"WinNT://$env:computername/$_,Administrateurs\"«»)
[/code:1]
me fait l'erreur:
L'exception suivante s'est produite lors de la récupération du membre « Add » : « Le nom de groupe est introuvable.
»
Au caractère C:\Users\test1\Desktop\decryptPassCreateAdmin.ps1:29 : 5
+ $group.Add(\"WinNT://$env:computername/$_,Administrateurs\")
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (
+ FullyQualifiedErrorId : CatchFromBaseGetMember
Merci pour votre aide
Connexion ou Créer un compte pour participer à la conversation.
- Philippe
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 1778
- Remerciements reçus 21
il y a 8 ans 6 mois #24217
par Philippe
Réponse de Philippe sur le sujet Re:déploiement compte admin local windows server
salut Livarkhal
c'est le problème des copier/coller incomplet
il manque plein de ligne de code sur ton script de décryptage
regarder sur le site ou tu la trouver pour l'avoir complet
c'est le problème des copier/coller incomplet
il manque plein de ligne de code sur ton script de décryptage
regarder sur le site ou tu la trouver pour l'avoir complet
Connexion ou Créer un compte pour participer à la conversation.
- baptiste
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 6
- Remerciements reçus 0
il y a 8 ans 6 mois #24219
par baptiste
Réponse de baptiste sur le sujet Re:déploiement compte admin local windows server
je suis un énorme boulet ... exact, le site où j'ai lâchement copier ces scripts étaient sur un autre forum où la personne demandait de l'aide, et une personne à répondu en corrigeant juste les erreurs de syntaxe ...
Je suis désolé pour le post inutile du coup ^^ et je te remercie pour ta réponse
Je clos donc le sujet et je met cis-joint le script original de microsoft (vu qu'il l'avait copié du site de microsoft).
support.microsoft.com/en-us/help/2962486....0%3Fwa%3Dwsignin1.0
Je suis désolé pour le post inutile du coup ^^ et je te remercie pour ta réponse
Je clos donc le sujet et je met cis-joint le script original de microsoft (vu qu'il l'avait copié du site de microsoft).
support.microsoft.com/en-us/help/2962486....0%3Fwa%3Dwsignin1.0
Connexion ou Créer un compte pour participer à la conversation.
- Philippe
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 1778
- Remerciements reçus 21
il y a 8 ans 6 mois #24220
par Philippe
Réponse de Philippe sur le sujet Re:déploiement compte admin local windows server
merci Livarkhal
heureux de voir que t'a trouver le problème
et merci pour le lien vers le script original
heureux de voir que t'a trouver le problème
et merci pour le lien vers le script original
Connexion ou Créer un compte pour participer à la conversation.
- baptiste
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 6
- Remerciements reçus 0
il y a 8 ans 6 mois #24221
par baptiste
Réponse de baptiste sur le sujet Re:déploiement compte admin local windows server
Alors je reviens pour une autre problème avec le script proposé par microsoft 
Dans leur script ils proposent une solution pour créer des password random qui seront stockés dans un fichier TSV ... Seulement moi je veux que le compte admin qui sera créé soit le même sur tout les postes, avec le même mot de passe ...
De plus dans leur script (de ce que je comprend) ils demandent de renseigner le computername, mais nous les noms des machines sont ceux que windows définit à l'installation ... et ce paramètre ne nous intéresse pas vu que le script sera déployé par gpo sur tout le domaine.
faut vraiment que je me plonge dans le powershell
Dans leur script ils proposent une solution pour créer des password random qui seront stockés dans un fichier TSV ... Seulement moi je veux que le compte admin qui sera créé soit le même sur tout les postes, avec le même mot de passe ...
De plus dans leur script (de ce que je comprend) ils demandent de renseigner le computername, mais nous les noms des machines sont ceux que windows définit à l'installation ... et ce paramètre ne nous intéresse pas vu que le script sera déployé par gpo sur tout le domaine.
faut vraiment que je me plonge dans le powershell
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.051 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- [Résolu] Déploiement compte admin local server