Question [resolu]Probleme script démarrage/Arret services

Plus d'informations
il y a 7 ans 6 mois #22469 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

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 7 ans 6 mois #22470 par Laurent Dardenne
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 \&quot;Running\&quot;«»)
[/code:1]
:pinch:

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 7 ans 6 mois #22473 par jeffdu62
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 \&quot;$nom\&quot; } |select Status | ft -HideTableHeader) | Out-String

return $etatService.trim()

}





if ((Service2 $1) -eq \&quot;Running\&quot;«»)

{ Write-Host \&quot; ca démarre\&quot;

}

else

{Write-Host \&quot;éteint\&quot;

}[/code:1]<br><br>Message édité par: hutre, à: 10/10/16 14:19

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 7 ans 6 mois #22474 par Philippe
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 \&quot;$nom\&quot; } |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 \&quot;$nom\&quot; }).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é ! B)
.

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.074 secondes
Propulsé par Kunena