Question
Get-service et WMI
- Gaga
- Auteur du sujet
- Hors Ligne
- Membre junior
-
Réduire
Plus d'informations
- Messages : 39
- Remerciements reçus 0
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 ?
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.
- Matthew BETTON
- Hors Ligne
- Membre platinium
-
Réduire
Plus d'informations
- Messages : 968
- Remerciements reçus 0
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
'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.
- Karon
- Hors Ligne
- Membre junior
-
Réduire
Plus d'informations
- Messages : 23
- Remerciements reçus 0
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
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.
- Matthew BETTON
- Hors Ligne
- Membre platinium
-
Réduire
Plus d'informations
- Messages : 968
- Remerciements reçus 0
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
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.
- Karon
- Hors Ligne
- Membre junior
-
Réduire
Plus d'informations
- Messages : 23
- Remerciements reçus 0
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 \"Running\"} | Measure-Object -Line | format-wide
write-host \"Statut de $Services sur $Computer : $sstatut\" # Affiche le resultat
if ($sstatut -eq 1)
{
$Msg = $Services + \" : OK\"
}
Else
{
$Msg = $Services + \" : KO\"
}
$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
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 \"Running\"} | Measure-Object -Line | format-wide
write-host \"Statut de $Services sur $Computer : $sstatut\" # Affiche le resultat
if ($sstatut -eq 1)
{
$Msg = $Services + \" : OK\"
}
Else
{
$Msg = $Services + \" : KO\"
}
$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.
- Karon
- Hors Ligne
- Membre junior
-
Réduire
Plus d'informations
- Messages : 23
- Remerciements reçus 0
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 \"Running\"} | Measure-Object -Line | format-wide
[/code:1]
Par :
[code:1][void] ([Reflection.Assembly]::LoadWithPartialName(\"System.ServiceProcess\"«»))
#$sstatut = get-service -Name $Services -ComputerName $Computer #| where-object {$_.Status -eq \"Running\"} | Measure-Object -Line #| format-wide
$svc = new-object System.ServiceProcess.ServiceController(\"$Services\",\"$Computer\"«»)
$sstatut = $svc.status
write-host \"Statut de $Services sur $Computer : $sstatut\" #Affice la valeur
Pause
if ($sstatut -eq \"Running\"«»)[/code:1]
Par contre, je ne comprends pas pourquoi l'autre ligne ne fonctionne pas...
Merci
Karon
J'ai trouvé une solution :
J'ai remplacé:
[code:1]$sstatut = get-service -Name $Services -ComputerName $Computer | where-object {$_.Status -eq \"Running\"} | Measure-Object -Line | format-wide
[/code:1]
Par :
[code:1][void] ([Reflection.Assembly]::LoadWithPartialName(\"System.ServiceProcess\"«»))
#$sstatut = get-service -Name $Services -ComputerName $Computer #| where-object {$_.Status -eq \"Running\"} | Measure-Object -Line #| format-wide
$svc = new-object System.ServiceProcess.ServiceController(\"$Services\",\"$Computer\"«»)
$sstatut = $svc.status
write-host \"Statut de $Services sur $Computer : $sstatut\" #Affice la valeur
Pause
if ($sstatut -eq \"Running\"«»)[/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
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- Get-service et WMI