Question
Création d'une GPO - Modèles d'administration
- Joran
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 16
- Remerciements reçus 0
il y a 8 ans 1 mois #25230
par Joran
Création d'une GPO - Modèles d'administration a été créé par Joran
Bonjour à tous,
Pour mon apprentissage, je dois créer un script en Powershell (sa fait deux semaines que je commence powershell
).
Mon travail au début était de créer un script afin de vérifier que mes GPOs était bien installé, et j'ai réussi!!
Maintenant je dois créer un script afin de créer des GPOs... J'ai donc écrit ceci :
[code:1]
$P210 = Get-Item -Path Registry::HKLM\SOFTWARE\Policies\Microsoft\Windows\AppModel\StateManager 2>&1 | Out-Null
if($P210 -eq $NULL) {
New-Item -Path Registry::HKLM\SOFTWARE\Policies\Microsoft\Windows\AppModel
New-Item -Path Registry::HKLM\SOFTWARE\Policies\Microsoft\Windows\AppModel\StateManager 2>&1 | Out-Null
Set-ItemProperty -Path Registry::HKLM\SOFTWARE\Policies\Microsoft\Windows\ApModel\StateManager -Name AllowSharedLocalAppData -Value 0
Write-Output \"P210 - OK la clé & la règle ont été crées\"
} ElseIf ($P210 -eq $true) {
Set-ItemProperty -Path Registry::HKLM\SOFTWARE\Policies\Microsoft\Windows\AppModel\StateManager -Name AllowSharedLocalAppData -Value 0
Write-Output \"P210 - la règle a été crée\"
}
else {
Write-Output \"P210 - MANQUANT\"
}
[/code:1]
Donc voilà mon code, en gros, j’essaie de crée une clé dans ma base de registre suivi d'une valeur mais Si la clé est déjà crée alors il ne crée que la règle.
Sauf que le souci, c'est que pour ce P210, il faut que je crée deux clé : AppModel et StateManager.
L'erreur qu'il m'affiche est :
[code:1]
New-Item : Il existe déjà une clé à cet emplacement
Au caractère Ligne:4 : 5
+ New-Item -Path Registry::HKLM\SOFTWARE\Policies\Microsoft\Windows ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ResourceExists: (Microsoft.Power...RegistryWrapper:RegistryWrapper) [New-Item], IOException
+ FullyQualifiedErrorId : System.IO.Exception,Microsoft.Poershell.Commands.NewItemCommand
[/code:1]
Je sias que j'ai une erreur au début de mon ElseIf mais j'arrive pas a voir où, pourriez-vous m'aidez?
Merci d'avance!
Pour mon apprentissage, je dois créer un script en Powershell (sa fait deux semaines que je commence powershell
Mon travail au début était de créer un script afin de vérifier que mes GPOs était bien installé, et j'ai réussi!!
Maintenant je dois créer un script afin de créer des GPOs... J'ai donc écrit ceci :
[code:1]
$P210 = Get-Item -Path Registry::HKLM\SOFTWARE\Policies\Microsoft\Windows\AppModel\StateManager 2>&1 | Out-Null
if($P210 -eq $NULL) {
New-Item -Path Registry::HKLM\SOFTWARE\Policies\Microsoft\Windows\AppModel
New-Item -Path Registry::HKLM\SOFTWARE\Policies\Microsoft\Windows\AppModel\StateManager 2>&1 | Out-Null
Set-ItemProperty -Path Registry::HKLM\SOFTWARE\Policies\Microsoft\Windows\ApModel\StateManager -Name AllowSharedLocalAppData -Value 0
Write-Output \"P210 - OK la clé & la règle ont été crées\"
} ElseIf ($P210 -eq $true) {
Set-ItemProperty -Path Registry::HKLM\SOFTWARE\Policies\Microsoft\Windows\AppModel\StateManager -Name AllowSharedLocalAppData -Value 0
Write-Output \"P210 - la règle a été crée\"
}
else {
Write-Output \"P210 - MANQUANT\"
}
[/code:1]
Donc voilà mon code, en gros, j’essaie de crée une clé dans ma base de registre suivi d'une valeur mais Si la clé est déjà crée alors il ne crée que la règle.
Sauf que le souci, c'est que pour ce P210, il faut que je crée deux clé : AppModel et StateManager.
L'erreur qu'il m'affiche est :
[code:1]
New-Item : Il existe déjà une clé à cet emplacement
Au caractère Ligne:4 : 5
+ New-Item -Path Registry::HKLM\SOFTWARE\Policies\Microsoft\Windows ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ResourceExists: (Microsoft.Power...RegistryWrapper:RegistryWrapper) [New-Item], IOException
+ FullyQualifiedErrorId : System.IO.Exception,Microsoft.Poershell.Commands.NewItemCommand
[/code:1]
Je sias que j'ai une erreur au début de mon ElseIf mais j'arrive pas a voir où, pourriez-vous m'aidez?
Merci d'avance!
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 1 mois #25234
par Philippe
Réponse de Philippe sur le sujet Re:Création d'une GPO - Modèles d'administration
salut Joran et bienvenue
Je suis pas sur de comprendre le rapport entre les GPO et ton script !?
mais ton script a bien une voir plusieurs erreur de conception des la premiere ligne
[code:1]$P210 = Get-Item -Path Registry::HKLM\SOFTWARE\Policies\Microsoft\Windows\AppModel\StateManager 2>&1 | Out-Null[/code:1]
tu a mis a la fin de ta ligne \"2>&1\" et \"| Out-Null\"
sais tu a pourquoi ?
\"| Out-Null\" renvoie le résultat de ou des précédente instruction dans le néant ! le pipe \"|\" fait le renvoie et \"out-null\" fait le néant, ou si tu préfère nul part
\"2>&1\" fait une redirection vers...rien puisque tu n'a pas indiqué de destination !
au final ta variable $P210 reste vide quelque soit le contenue de la base de registre
Je suis pas sur de comprendre le rapport entre les GPO et ton script !?
mais ton script a bien une voir plusieurs erreur de conception des la premiere ligne
[code:1]$P210 = Get-Item -Path Registry::HKLM\SOFTWARE\Policies\Microsoft\Windows\AppModel\StateManager 2>&1 | Out-Null[/code:1]
tu a mis a la fin de ta ligne \"2>&1\" et \"| Out-Null\"
sais tu a pourquoi ?
\"| Out-Null\" renvoie le résultat de ou des précédente instruction dans le néant ! le pipe \"|\" fait le renvoie et \"out-null\" fait le néant, ou si tu préfère nul part
\"2>&1\" fait une redirection vers...rien puisque tu n'a pas indiqué de destination !
au final ta variable $P210 reste vide quelque soit le contenue de la base de registre
Connexion ou Créer un compte pour participer à la conversation.
- Joran
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 16
- Remerciements reçus 0
il y a 8 ans 1 mois #25237
par Joran
Réponse de Joran sur le sujet Re:Création d'une GPO - Modèles d'administration
Salut, merci pour ta réponse
Alors pour répondre à ta question, mon script est censé permettre l'automatisation de certaines GPO sachant que j'en ai déjà fait un qui vérifie que certaines GPO soient bien installés.
Le script qui installe mes GPO directement dans la base de registres sans passer par la partie graphique ainsi une fois construite on gagnera un temps considérable.
La partie de ma commande \"2>&1 | Out-Null\" me permet d'éviter d'avoir un retour de ma commande
[code:1]
$P210 = Get-Item -Path Registry::HKLM\SOFTWARE\Policies\Microsoft\Windows\AppModel\StateManager 2>&1 | Out-Null
[/code:1]
Car enfait il est censé me dire s'il trouve ou pas la clé dans la base de registres donc je n'ai aucun retour. Quelles formulations auriez-vous écrites afin de remplacer ma ligne?
Ensuite, mon script vérifie dans la base de registres qu'une clé existe SI elle n'existe pas il la crée suivi de la valeur qui va avec SINON il ne crée que la valeur. Sauf qu'on ma demandé d'ajouter une ligne afin d'avoir un retour ERREUR si jamais ça ne marche pas donc j'ai placé mon SINON dans un ElseIf et dans mon else le renvoi à erreur mais je bloque à mon ElseIf...
Qu'elle valeur retournée?
Merci d'avance
Alors pour répondre à ta question, mon script est censé permettre l'automatisation de certaines GPO sachant que j'en ai déjà fait un qui vérifie que certaines GPO soient bien installés.
Le script qui installe mes GPO directement dans la base de registres sans passer par la partie graphique ainsi une fois construite on gagnera un temps considérable.
La partie de ma commande \"2>&1 | Out-Null\" me permet d'éviter d'avoir un retour de ma commande
[code:1]
$P210 = Get-Item -Path Registry::HKLM\SOFTWARE\Policies\Microsoft\Windows\AppModel\StateManager 2>&1 | Out-Null
[/code:1]
Car enfait il est censé me dire s'il trouve ou pas la clé dans la base de registres donc je n'ai aucun retour. Quelles formulations auriez-vous écrites afin de remplacer ma ligne?
Ensuite, mon script vérifie dans la base de registres qu'une clé existe SI elle n'existe pas il la crée suivi de la valeur qui va avec SINON il ne crée que la valeur. Sauf qu'on ma demandé d'ajouter une ligne afin d'avoir un retour ERREUR si jamais ça ne marche pas donc j'ai placé mon SINON dans un ElseIf et dans mon else le renvoi à erreur mais je bloque à mon ElseIf...
Qu'elle valeur retournée?
Merci d'avance
Connexion ou Créer un compte pour participer à la conversation.
- Arnaud Petitjean
-
- Hors Ligne
- Modérateur
-
il y a 8 ans 1 mois #25244
par Arnaud Petitjean
MVP PowerShell et créateur de ce magnifique forum
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?
Réponse de Arnaud Petitjean sur le sujet Re:Création d'une GPO - Modèles d'administration
Bonjour,
Pourquoi se compliquer la vie à créer des GPOs de la sorte alors qu'il existe un module PowerShell pour cela ?
Voir ici : New-CPO cmdlet
Personnellement je ne me risquerais pas à créer des GPOs en allant bidouiller directement dans la base de registres alors que l'on peut faire autrement et en plus c'est supporté par Microsoft...
Arnaud
Pourquoi se compliquer la vie à créer des GPOs de la sorte alors qu'il existe un module PowerShell pour cela ?
Voir ici : New-CPO cmdlet
Personnellement je ne me risquerais pas à créer des GPOs en allant bidouiller directement dans la base de registres alors que l'on peut faire autrement et en plus c'est supporté par Microsoft...
Arnaud
MVP PowerShell et créateur de ce magnifique forum
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?
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 1 mois #25250
par Philippe
Réponse de Philippe sur le sujet Re:Création d'une GPO - Modèles d'administration
je rejoint Arnaud sur ça reflection. Dis toi que ce qui fonctionne aujourd'hui peut ne plus fonctionner demain vu la technique employer !
pour en revenir a ton erreur
utilise plutôt le parametre commun aux instruction PowerShell \"ErrorAction\", qui va te permettre de bloquer les message d'erreur tout en ayant les infos. la doc ici
[code:1]$P210 = Get-Item -Path Registry::HKLM\SOFTWARE\... -ErrorAction SilentlyContinue[/code:1]
apres pour le if je mettrais [code:1]if ($p210.Property -contains \"StateManager\"«») {...[/code:1] pour verifier si \"StateManager\" existe !
le \"if($P210 -eq $NULL)\" reste utile en cas d'erreur puisque quand cas d'erreur get-item renvoie $null
pour en revenir a ton erreur
la tu ne retourne vraiment plus rien même pas les valeur trouver !!!La partie de ma commande \"2>&1 | Out-Null\" me permet d'éviter d'avoir un retour de ma commande
utilise plutôt le parametre commun aux instruction PowerShell \"ErrorAction\", qui va te permettre de bloquer les message d'erreur tout en ayant les infos. la doc ici
[code:1]$P210 = Get-Item -Path Registry::HKLM\SOFTWARE\... -ErrorAction SilentlyContinue[/code:1]
apres pour le if je mettrais [code:1]if ($p210.Property -contains \"StateManager\"«») {...[/code:1] pour verifier si \"StateManager\" existe !
le \"if($P210 -eq $NULL)\" reste utile en cas d'erreur puisque quand cas d'erreur get-item renvoie $null
Connexion ou Créer un compte pour participer à la conversation.
- Quentin
- Hors Ligne
- Membre senior
-
Réduire
Plus d'informations
- Messages : 47
- Remerciements reçus 0
il y a 8 ans 4 semaines #25353
par Quentin
Réponse de Quentin sur le sujet Re:Création d'une GPO - Modèles d'administration
Bonjour,
Je me suis retrouvé dans le même cas que Joran.
Dans un soucis d'industrialisation de mise en place de GPO spécifiques, j'ai également scripté la création ou la modification de clés de registres.
La solution d'Arnaud est effectivement optimisée. Cependant, elle n'est valable qu'à partir d'un OS sous WS 2012.
Il faut donc bien prendre en compte les éléments suivants pour la création / modification des clés de registres :
- tester tes chemins d'accès aux clés ou aux propriétés
[code:1]Test-Path -Path $tonchemin
#renvoie $true ou $false[/code:1]
- savoir quel type de clé ou de propriété tu modifies (DWORD,String, ...)
- en fonction de ce que ton test de chemin te retourne, soit créer la clé + propriétés / soit modifier la clé + propriétés
[code:1]#créer une clé :
New-item -path $tonchemin -name $nomclé
#créer une propriété
New-Itemproperty -path $tonchemin -name $nompropriété -value $tavaleur -propertytype $typedepropriété #(les types sont : Dword, MultiString, Binary,String)
#modifier une propriété :
Set-ItemProperty -Path $tonchemin -name $tapropriété -value $tavaleur[/code:1]
Je te laisse essayer, pour moi ça a fonctionné pour plus de 180 GPOs.
En pièce jointe, un fichier Excel tiré de chez Microsoft qui te précise quelles clés de registres sont modifiées pour quelle GPO.
Whitatrax
[EDIT] Bon, fichier trop volumineux, même compressé je ne peux pas te le déposer Sorry<br><br>Message édité par: Whitatrax, à: 26/04/18 09:00
Je me suis retrouvé dans le même cas que Joran.
Dans un soucis d'industrialisation de mise en place de GPO spécifiques, j'ai également scripté la création ou la modification de clés de registres.
La solution d'Arnaud est effectivement optimisée. Cependant, elle n'est valable qu'à partir d'un OS sous WS 2012.
Il faut donc bien prendre en compte les éléments suivants pour la création / modification des clés de registres :
- tester tes chemins d'accès aux clés ou aux propriétés
[code:1]Test-Path -Path $tonchemin
#renvoie $true ou $false[/code:1]
- savoir quel type de clé ou de propriété tu modifies (DWORD,String, ...)
- en fonction de ce que ton test de chemin te retourne, soit créer la clé + propriétés / soit modifier la clé + propriétés
[code:1]#créer une clé :
New-item -path $tonchemin -name $nomclé
#créer une propriété
New-Itemproperty -path $tonchemin -name $nompropriété -value $tavaleur -propertytype $typedepropriété #(les types sont : Dword, MultiString, Binary,String)
#modifier une propriété :
Set-ItemProperty -Path $tonchemin -name $tapropriété -value $tavaleur[/code:1]
Je te laisse essayer, pour moi ça a fonctionné pour plus de 180 GPOs.
En pièce jointe, un fichier Excel tiré de chez Microsoft qui te précise quelles clés de registres sont modifiées pour quelle GPO.
Whitatrax
[EDIT] Bon, fichier trop volumineux, même compressé je ne peux pas te le déposer Sorry<br><br>Message édité par: Whitatrax, à: 26/04/18 09:00
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.047 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- Création d'une GPO - Modèles d'administration