Question Get-service et WMI

Plus d'informations
il y a 14 ans 6 mois #10540 par Gaga
Get-service et WMI a été créé par Gaga
Salut à tous,

Pour mon premier message, je voudrais dire un grand merci aux membres qui ont crées et/ou qui contribuent à la qualité de ce site dédié à Powershell. Un GRAND BRAVO à tous. Pour ma part je pratique Powershell depuis qq mois et j'avoue y prendre plus de plaisir de jour en jour.
J'ai une question qui me trotte dans la tête depuis qq temps :
- quelle est la différence entre Get-service et un accès WMI pour voir l'état des services ? J'ai l'impression qu'avec WMI on a beaucoup plus d'info sur le(s) service(s) qu'avec la cmdlet Get-Service.
- Get-service fais un accès WMI pour avoir les infos sur un services, ou bien c'est une autre méthode ?

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

Plus d'informations
il y a 14 ans 6 mois #10541 par Matthew BETTON
Réponse de Matthew BETTON sur le sujet Re:Get-service et WMI
Bonjour,

'Get-WmiObject -Class Win32_Service' renvoie un objet issu de la classe ' Win32_Service ', accessible (entre autre) via WMI.

[code:1]Get-WmiObject -Class Win32_Service | Get-Member

TypeName: System.Management.ManagementObject#root\cimv2\Win32_Service

...[/code:1]

'Get-Service' retourne un objet du .Net Framework, provenant de la classe ' System.ServiceProcess.ServiceController '.

[code:1]Get-Service | Get-Member

TypeName: System.ServiceProcess.ServiceController

...[/code:1]

Suivant l'une ou l'autre des méthodes utilisées, tu n'accéderas pas aux mêmes méthodes / propriétés. Tu pourras observer celles disponibles, via 'Get-Member', comme dans les commandes ci-dessus ...

@ +

Matthew

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

Plus d'informations
il y a 14 ans 6 mois #10546 par Karon
Réponse de Karon sur le sujet Re:Get-service et WMI
Bonjour,

Lorsque j'utilise la commande suivante

[code:1]get-service -Name Service -ComputerName Serveur | where-object {$_.Status -eq \"Running\"}[/code:1]

dans un script

J'ai la réponse suivante :

System.ServiceProcess.ServiceController

Je devrais peut être utiliser une autre commande ?

Merci.

Karon<br><br>Message édité par: Karon, à: 3/11/11 11:48

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

Plus d'informations
il y a 14 ans 6 mois #10549 par Matthew BETTON
Réponse de Matthew BETTON sur le sujet Re:Get-service et WMI
Bonsoir,

Je ne reproduis pas ton problème si j'exécute ta commande... Pour mieux comprendre quel est ton problème, peux tu poster ton script ici ?

@ +

Matthew

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

Plus d'informations
il y a 14 ans 6 mois #10557 par Karon
Réponse de Karon sur le sujet Re:Get-service et WMI
Bonjour,

Voici le code utilisé :

[code:1]
function Services {
#
# Utilisation de la fonction :
#
# Process SERVEUR Process Col Line
#
# SERVEUR : Nom du serveur
# Services : Nom du process à surveiller
# Col : Colonne utilisée pour indiquer la valeur
# Sheet : Feuille de calcul à utiliser
#
$Computer = $args[0]
$Services = $args[1]
$Col_xls = $args[2]
$Line_xls = $args[3]
$Sheet_xls = $args[4]
$feuille = $classeur.worksheets.item($Sheet_xls)

$sstatut = get-service -Name $Services -ComputerName $Computer | where-object {$_.Status -eq \&quot;Running\&quot;} | Measure-Object -Line | format-wide

write-host \&quot;Statut de $Services sur $Computer : $sstatut\&quot; # Affiche le resultat

if ($sstatut -eq 1)
{
$Msg = $Services + \&quot; : OK\&quot;
}
Else
{
$Msg = $Services + \&quot; : KO\&quot;
}

$feuille.Cells.Item($Line_xls,3) = $Heure
$feuille.Cells.Item($Line_xls,$Col_xls) = $Msg
}
[/code:1]

Effectivement, la ligne lancée seule ne pose aucun problème.

Merci

Karon.<br><br>Message édité par: Karon, à: 4/11/11 09:49

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

Plus d'informations
il y a 14 ans 6 mois #10558 par Karon
Réponse de Karon sur le sujet Re:Get-service et WMI
Bonjour,

J'ai trouvé une solution :

J'ai remplacé:

[code:1]$sstatut = get-service -Name $Services -ComputerName $Computer | where-object {$_.Status -eq \&quot;Running\&quot;} | Measure-Object -Line | format-wide
[/code:1]

Par :

[code:1][void] ([Reflection.Assembly]::LoadWithPartialName(\&quot;System.ServiceProcess\&quot;«»))

#$sstatut = get-service -Name $Services -ComputerName $Computer #| where-object {$_.Status -eq \&quot;Running\&quot;} | Measure-Object -Line #| format-wide
$svc = new-object System.ServiceProcess.ServiceController(\&quot;$Services\&quot;,\&quot;$Computer\&quot;«»)

$sstatut = $svc.status
write-host \&quot;Statut de $Services sur $Computer : $sstatut\&quot; #Affice la valeur
Pause
if ($sstatut -eq \&quot;Running\&quot;«»)[/code:1]

Par contre, je ne comprends pas pourquoi l'autre ligne ne fonctionne pas...

Merci

Karon

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

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