Question
[resolu]Probleme script démarrage/Arret services
- jeffdu62
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 9
- Remerciements reçus 0
il y a 9 ans 5 mois #22469
par jeffdu62
[resolu]Probleme script démarrage/Arret services a été créé par jeffdu62
Bonjour,
Je débute dans le powershell et on me demande de créer différents scripts et je bloque sur un en proticulier et je ne vois pas ou ca bloque.
le but de ce script est d'arreter ou de redémarrer un service dont le nom en argument va me provenir d'un fichier xml
Voici le code :
[code:1]
function Service2 {
param([parameter(Mandatory=$true)][string]$nom)
$etatService = (get-service | Where-Object {$_.Name -like \"$nom\" } |select Status | ft -HideTableHeader) | Out-String
$etat=$etatService.Trim() |Out-String
Write-Host $etat
}
if ((Service2 $1=$nom) -eq \"Running\"«»)
{ Write-Host \" ca démarre\"
}
else
{Write-Host \"éteint\"
}[/code:1]
lorsque j'exécute ce script j'obtient systématiquement éteint alors que le service est bien démarré.
j'avoue que je sèche un peu.
Si quelqu'un a une idée?
Merci<br><br>Message édité par: hutre, à: 3/11/16 17:23
Je débute dans le powershell et on me demande de créer différents scripts et je bloque sur un en proticulier et je ne vois pas ou ca bloque.
le but de ce script est d'arreter ou de redémarrer un service dont le nom en argument va me provenir d'un fichier xml
Voici le code :
[code:1]
function Service2 {
param([parameter(Mandatory=$true)][string]$nom)
$etatService = (get-service | Where-Object {$_.Name -like \"$nom\" } |select Status | ft -HideTableHeader) | Out-String
$etat=$etatService.Trim() |Out-String
Write-Host $etat
}
if ((Service2 $1=$nom) -eq \"Running\"«»)
{ Write-Host \" ca démarre\"
}
else
{Write-Host \"éteint\"
}[/code:1]
lorsque j'exécute ce script j'obtient systématiquement éteint alors que le service est bien démarré.
j'avoue que je sèche un peu.
Si quelqu'un a une idée?
Merci<br><br>Message édité par: hutre, à: 3/11/16 17:23
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 68
il y a 9 ans 5 mois #22470
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:Probleme script démarrage/Arret services Windows
Salut,
peut-être un soucis avec ce type d'écriture :
[code:1]ft -HideTableHeader) | Out-String[/code:1]
Tu peux garder l'objet tel quel et vérifier sa propriété Status. On manipule principalement des objets en PS, pas besoin de les transformer en String.
Et ceci me laisse perplexe :
[code:1]
if ((Service2 $1=$nom) -eq \"Running\"«»)
[/code:1]
peut-être un soucis avec ce type d'écriture :
[code:1]ft -HideTableHeader) | Out-String[/code:1]
Tu peux garder l'objet tel quel et vérifier sa propriété Status. On manipule principalement des objets en PS, pas besoin de les transformer en String.
Et ceci me laisse perplexe :
[code:1]
if ((Service2 $1=$nom) -eq \"Running\"«»)
[/code:1]
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- jeffdu62
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 9
- Remerciements reçus 0
il y a 9 ans 5 mois #22473
par jeffdu62
Réponse de jeffdu62 sur le sujet Re:Probleme script démarrage/Arret services Windows
Bonjour,
Merci de la réponse. J'ai trouvé mon problème.
il manquait une variable au début de mon script
Ce qui fait que le script suivant fonctionne
[code:1]
param([string] $1)
function Service2 {
param([parameter(Mandatory=$true)][string]$nom)
$etatService = (get-service | Where-Object {$_.Name -like \"$nom\" } |select Status | ft -HideTableHeader) | Out-String
return $etatService.trim()
}
if ((Service2 $1) -eq \"Running\"«»)
{ Write-Host \" ca démarre\"
}
else
{Write-Host \"éteint\"
}[/code:1]<br><br>Message édité par: hutre, à: 10/10/16 14:19
Merci de la réponse. J'ai trouvé mon problème.
il manquait une variable au début de mon script
Ce qui fait que le script suivant fonctionne
[code:1]
param([string] $1)
function Service2 {
param([parameter(Mandatory=$true)][string]$nom)
$etatService = (get-service | Where-Object {$_.Name -like \"$nom\" } |select Status | ft -HideTableHeader) | Out-String
return $etatService.trim()
}
if ((Service2 $1) -eq \"Running\"«»)
{ Write-Host \" ca démarre\"
}
else
{Write-Host \"éteint\"
}[/code:1]<br><br>Message édité par: hutre, à: 10/10/16 14:19
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 9 ans 5 mois #22474
par Philippe
Réponse de Philippe sur le sujet Probleme script démarrage/Arret services Windows
Bonjour Hutre
comme te disais Laurent, tu peut simplifié ton script pour qu'il soit clair et simple à corrigé/maintenir :
par exemple ces lignes à pour but renvoyer l'état du service dans une chaine de caractère :[code:1]$etatService = (get-service | Where-Object {$_.Name -like \"$nom\" } |select Status | ft -HideTableHeader) | Out-String
return $etatService.trim()[/code:1]tu peut la remplacé par ceci :[code:1]return (get-service | Where-Object {$_.Name -like \"$nom\" }).Status[/code:1]qui est plus court
ou par cela plus clair :[code:1]$objService = Get-Service -Name $nom
return $objService.Status[/code:1]
pour rappel ft alias de format-table sert à affiché des données en tableau, pas très utile ici
out-string sert a convertir des données en chaine de caractère, mais ici status est déjà une chaine !!
et je passe sur le trim() qui la encore n'a plus d'utilité si on enlève le ft
si tu veux avoir plus d'info sur tous ça regarde les tutos de Laurent ou alors achète le livre de gauche dont l'un des auteurs est le créateur de site !
tu peut aussi venir ici nous posé des questions sur ce que tu ne comprend pas
nous feront notre possible pour te donné une réponse ou pour trouvé un tuto adapté !
.
comme te disais Laurent, tu peut simplifié ton script pour qu'il soit clair et simple à corrigé/maintenir :
par exemple ces lignes à pour but renvoyer l'état du service dans une chaine de caractère :[code:1]$etatService = (get-service | Where-Object {$_.Name -like \"$nom\" } |select Status | ft -HideTableHeader) | Out-String
return $etatService.trim()[/code:1]tu peut la remplacé par ceci :[code:1]return (get-service | Where-Object {$_.Name -like \"$nom\" }).Status[/code:1]qui est plus court
ou par cela plus clair :[code:1]$objService = Get-Service -Name $nom
return $objService.Status[/code:1]
pour rappel ft alias de format-table sert à affiché des données en tableau, pas très utile ici
out-string sert a convertir des données en chaine de caractère, mais ici status est déjà une chaine !!
et je passe sur le trim() qui la encore n'a plus d'utilité si on enlève le ft
si tu veux avoir plus d'info sur tous ça regarde les tutos de Laurent ou alors achète le livre de gauche dont l'un des auteurs est le créateur de site !
tu peut aussi venir ici nous posé des questions sur ce que tu ne comprend pas
nous feront notre possible pour te donné une réponse ou pour trouvé un tuto adapté !
.
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.053 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- [resolu]Probleme script démarrage/Arret services