Question
Script qui ne fonctionne pas en administrateur.
- Druss
- Auteur du sujet
- Hors Ligne
- Nouveau membre
Réduire
Plus d'informations
- Messages : 15
- Remerciements reçus 0
il y a 11 mois 4 semaines - il y a 11 mois 4 semaines #33361
par Druss
Script qui ne fonctionne pas en administrateur. a été créé par Druss
Bonjour à tous,
J'ai un script qui fonctionne très bien, mais uniquement si Powershell est exécuté en mode utilisateur. En mode administrateur, il renvoie systématiquement et peu importe le cas de figure (path vérifié, clé déjà installé ou non etc) :
La clé de registre n'existe pas localement, tentative d'installation
La clé de registre n'existe pas sur le serveur.
Voilà le script en question :
Merci d'avance pour votre temps et pour tout retour que vous pourriez me faire !
J'ai un script qui fonctionne très bien, mais uniquement si Powershell est exécuté en mode utilisateur. En mode administrateur, il renvoie systématiquement et peu importe le cas de figure (path vérifié, clé déjà installé ou non etc) :
La clé de registre n'existe pas localement, tentative d'installation
La clé de registre n'existe pas sur le serveur.
Voilà le script en question :
$localRegistryPath = "C:\Chemin\Local\fichier.reg" # Spécifiez le chemin local où vous souhaitez copier le fichier .reg
if (-not (Test-Path $localRegistryPath)) {
Write-Host "La clé de registre n'existe pas localement, tentative d'installation..."
$serverRegistryPath = "\\IPserveur\test\fichier.reg"
if (Test-Path $serverRegistryPath) {
Write-Host "La clé de registre existe sur le serveur, copie en cours..."
# Créez un répertoire local s'il n'existe pas
$localDirectory = [System.IO.Path]::GetDirectoryName($localRegistryPath)
if (-not (Test-Path $localDirectory)) {
New-Item -Path $localDirectory -ItemType Directory
}
Copy-Item -Path $serverRegistryPath -Destination $localRegistryPath
Write-Host "La clé de registre a été copiée depuis le serveur."
# Ajouter la clé de registre au registre local
Write-Host "Ajout de la clé de registre au registre local..."
Start-Process -FilePath "regedit.exe" -ArgumentList "/s $localRegistryPath" -Wait
Write-Host "La clé de registre a été installée localement."
} else {
Write-Host "La clé de registre n'existe pas sur le serveur."
}
} else {
Write-Host "La clé de registre existe déjà localement."
}
Merci d'avance pour votre temps et pour tout retour que vous pourriez me faire !
Dernière édition: il y a 11 mois 4 semaines par Arnaud Petitjean.
Connexion ou Créer un compte pour participer à la conversation.
- Arnaud Petitjean
- Hors Ligne
- Modérateur
il y a 11 mois 4 semaines #33362
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 Script qui ne fonctionne pas en administrateur.
Bonjour Druss,
Si PowerShell te donne ce message c'est que ta commande Test-Path $serverRegistryPath retourne False.
Qu'entends-tu exactement par "en mode administrateur" ? Tu devrais essayer justement en "mode administrateur" d'accèder au chemin de destination en PowerShell et voir si ça fonctionne ou pas. A priori ça ne fonctionnera pas mais au moins tu auras le message d'erreur complet. Et en lisant bien ce dernier, on devrait tout comprendre.
Ce que tu peux essayer de faire par exemple c'est "en mode administrateur comme tu dis" et en mode interactif (c'est à dire que tu tapes les commandes dans la console) de faire :
Get-Item $serverRegistryPath ou Get-Content $serverRegistryPath pour voir si ton fichier est accessible et voir si tu peux lire son contenu.
Arnaud
Si PowerShell te donne ce message c'est que ta commande Test-Path $serverRegistryPath retourne False.
Qu'entends-tu exactement par "en mode administrateur" ? Tu devrais essayer justement en "mode administrateur" d'accèder au chemin de destination en PowerShell et voir si ça fonctionne ou pas. A priori ça ne fonctionnera pas mais au moins tu auras le message d'erreur complet. Et en lisant bien ce dernier, on devrait tout comprendre.
Ce que tu peux essayer de faire par exemple c'est "en mode administrateur comme tu dis" et en mode interactif (c'est à dire que tu tapes les commandes dans la console) de faire :
Get-Item $serverRegistryPath ou Get-Content $serverRegistryPath pour voir si ton fichier est accessible et voir si tu peux lire son contenu.
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.
- Druss
- Auteur du sujet
- Hors Ligne
- Nouveau membre
Réduire
Plus d'informations
- Messages : 15
- Remerciements reçus 0
il y a 11 mois 4 semaines - il y a 11 mois 4 semaines #33365
par Druss
Réponse de Druss sur le sujet Script qui ne fonctionne pas en administrateur.
Bonjour Arnaud,
Déjà merci pour ta réponse et ton temps. Ensuite tu as entièrement raison Test-Path $serverRegistryPath retourne false.
Mais encore une fois uniquement quand la console Powershell (image 1 des pièces jointes) est éxécutée en tant qu'administrateur.
Si je me contente de lancer le script depuis le dossier où il est stocké (image 2) il fonctionne très bien.
D'ailleurs console Powershell lancée sans privilèges Test-Path "\\IPserveur\test\fichier.reg" retourne True
avec privilèges Test-Path "\\IPserveur\test\fichier.reg" retourne False
Je ne comprend pas cette différence de comportement. Mon problème vient du fait que le script sera lancé par une GPO, et du coup je ne sais pas prédire quel comportement il adoptera.
Merci encore,
Mickaël
Déjà merci pour ta réponse et ton temps. Ensuite tu as entièrement raison Test-Path $serverRegistryPath retourne false.
Mais encore une fois uniquement quand la console Powershell (image 1 des pièces jointes) est éxécutée en tant qu'administrateur.
Si je me contente de lancer le script depuis le dossier où il est stocké (image 2) il fonctionne très bien.
D'ailleurs console Powershell lancée sans privilèges Test-Path "\\IPserveur\test\fichier.reg" retourne True
avec privilèges Test-Path "\\IPserveur\test\fichier.reg" retourne False
Je ne comprend pas cette différence de comportement. Mon problème vient du fait que le script sera lancé par une GPO, et du coup je ne sais pas prédire quel comportement il adoptera.
Merci encore,
Mickaël
Pièces jointes :
Dernière édition: il y a 11 mois 4 semaines par Druss. Raison: Formulation
Connexion ou Créer un compte pour participer à la conversation.
- Arnaud Petitjean
- Hors Ligne
- Modérateur
il y a 11 mois 4 semaines #33370
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 Script qui ne fonctionne pas en administrateur.
Salut Druss,
Si tu veux un bon conseil : n'utilises jamais ISE comme environnement d'exécution pour tes scripts. C'est source d'erreur. Je me suis déjà pris la tête de nombreuses fois avec des scripts qui étaient sensés fonctionner mais qui ne fonctionnaient pas alors qu'ils marchaient très bien en réalité depuis la console Powershell classique.
Et puis il faut penser que lorsque tu planifieras une tâche où que tu exécuteras un script via une GPO, c'est la console classique qui sera lancée pour exécuter ton script, donc...
Pour ce qui est de ton problème, c'est assez étrange. Mais je ne pense pas que le problème vienne de PowerShell. Ca ressemble davantage à un problème de droits.
Que se passe-t-il si tu executes la commande Get-ChildItem "\\IPserveur\test\" ? A mon avis tu vas obtenir un "acces denied"...
Si tu veux un bon conseil : n'utilises jamais ISE comme environnement d'exécution pour tes scripts. C'est source d'erreur. Je me suis déjà pris la tête de nombreuses fois avec des scripts qui étaient sensés fonctionner mais qui ne fonctionnaient pas alors qu'ils marchaient très bien en réalité depuis la console Powershell classique.
Et puis il faut penser que lorsque tu planifieras une tâche où que tu exécuteras un script via une GPO, c'est la console classique qui sera lancée pour exécuter ton script, donc...
Pour ce qui est de ton problème, c'est assez étrange. Mais je ne pense pas que le problème vienne de PowerShell. Ca ressemble davantage à un problème de droits.
Que se passe-t-il si tu executes la commande Get-ChildItem "\\IPserveur\test\" ? A mon avis tu vas obtenir un "acces denied"...
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.
- Druss
- Auteur du sujet
- Hors Ligne
- Nouveau membre
Réduire
Plus d'informations
- Messages : 15
- Remerciements reçus 0
il y a 11 mois 3 semaines #33373
par Druss
Réponse de Druss sur le sujet Script qui ne fonctionne pas en administrateur.
Bonjour Arnaud,
"N'utilises jamais ISE comme environnement d'exécution pour tes scripts". C'est bien noté merci beaucoup.
"c'est la console classique qui sera lancée pour exécuter ton script". Voilà qui diminue beaucoup mes appréhensions, le script s'exécutant sans problème dans ce cas.
"Mais je ne pense pas que le problème vienne de PowerShell. Ca ressemble davantage à un problème de droits. ". J'avais cette possibilité en tête au moment de créer ce topic mais j'avais besoin d'un regard externe ET plus expérimenté pour conclure.
C'est vrai que je trouve le problème d'un script dysfonctionnant uniquement AVEC élévation de privilèges déroutant, moi qui suis un fervent croyant du "principe du moindre privilège".
"Que se passe-t-il si tu executes la commande Get-ChildItem "\\IPserveur\test\" ? A mon avis tu vas obtenir un "acces denied"..." Je suis actuellement sans emploi, je créé ce script (et d'autres) pour une association dont le SI de 6 personnes est au bord de l'implosion pour donner un coup de main, et je n'ai plus d'accès pour l'instant pour tester. Cependant, mes scripts doivent être mis en place dans les jours à venir, à cette occasion je pourrais peut-être essayer. (maintenant, je pense que les chances que tu aies raison flirte avec le 100%)
Je posterai s le résultat ici le cas échéant.
Merci encore, tu m'as été d'une grande aide et merci aussi pour les conseils !
"N'utilises jamais ISE comme environnement d'exécution pour tes scripts". C'est bien noté merci beaucoup.
"c'est la console classique qui sera lancée pour exécuter ton script". Voilà qui diminue beaucoup mes appréhensions, le script s'exécutant sans problème dans ce cas.
"Mais je ne pense pas que le problème vienne de PowerShell. Ca ressemble davantage à un problème de droits. ". J'avais cette possibilité en tête au moment de créer ce topic mais j'avais besoin d'un regard externe ET plus expérimenté pour conclure.
C'est vrai que je trouve le problème d'un script dysfonctionnant uniquement AVEC élévation de privilèges déroutant, moi qui suis un fervent croyant du "principe du moindre privilège".
"Que se passe-t-il si tu executes la commande Get-ChildItem "\\IPserveur\test\" ? A mon avis tu vas obtenir un "acces denied"..." Je suis actuellement sans emploi, je créé ce script (et d'autres) pour une association dont le SI de 6 personnes est au bord de l'implosion pour donner un coup de main, et je n'ai plus d'accès pour l'instant pour tester. Cependant, mes scripts doivent être mis en place dans les jours à venir, à cette occasion je pourrais peut-être essayer. (maintenant, je pense que les chances que tu aies raison flirte avec le 100%)
Je posterai s le résultat ici le cas échéant.
Merci encore, tu m'as été d'une grande aide et merci aussi pour les conseils !
Connexion ou Créer un compte pour participer à la conversation.
- Arnaud Petitjean
- Hors Ligne
- Modérateur
il y a 11 mois 3 semaines #33381
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 Script qui ne fonctionne pas en administrateur.
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.
Temps de génération de la page : 0.141 secondes
- Vous êtes ici :
- Accueil
- forum
- PowerShell
- Entraide pour les débutants
- Script qui ne fonctionne pas en administrateur.