Question lister les service d'un machine distante...

Plus d'informations
il y a 13 ans 11 mois #11943 par heyraud
Bonjour,
je découvre powershell non sans mal...
J'essai de faire un script qui me liste l'état de certain services sur une machine distante.


Voilà ma commande:
get-service -name winrm,dns,dhcpserver,dfs,dfsr,mpssvc,certsvc,*antivirus*,wuauserv -computername \"dc-g1\" | sort-object Name | format-table -property MachineName, Name, Status, DisplayName -auto

Quand je lance la commande en local (sans -computername) cela me sort la liste de service installé et leur état respectif + des erreur pour ceux qui ne sont pas installé.
Par contre avec la le paramêtre -computername Voici un extrait des messages d'erreur:


Get-Service : Impossible de trouver un service assorti du nom « certsvc ».
Au niveau de ligne : 1 Caractère : 12
+ get-service <<<< -name winrm,dns,dhcpserver,dfs,dfsr,mpssvc,certsvc,*antivirus*,wuauserv -computername \"dc-g1\" | sort-object Name | format-table -property MachineName, Name, Statu
s, DisplayName -auto
+ CategoryInfo : ObjectNotFound: (certsvc:String) [Get-Service], ServiceCommandException
+ FullyQualifiedErrorId : NoServiceFoundForGivenName,Microsoft.PowerShell.Commands.GetServiceCommand

Get-Service : Impossible d'ouvrir le Gestionnaire de contrôle des services sur l'ordinateur 'dc-g1'. Cette opération requiert des privilèges supplémentaires.
Au niveau de ligne : 1 Caractère : 12
+ get-service <<<< -name winrm,dns,dhcpserver,dfs,dfsr,mpssvc,certsvc,*antivirus*,wuauserv -computername \"dc-g1\" | sort-object Name | format-table -property MachineName, Name, Statu
s, DisplayName -auto
+ CategoryInfo : NotSpecified: (:) [Get-Service], InvalidOperationException
+ FullyQualifiedErrorId : System.InvalidOperationException,Microsoft.PowerShell.Commands.GetServiceCommand

J'ai pour tant changé l'executionpolicy sur remoteSigned sur le poste distant et qui est un windows server 2008r2.

Quelqu'un peut-il m'aider?


-secondequestion: comment traiter le message d'erreur si un service demandé n'est pas installé? afin d'afficher un avertissement?

Message édité par: lsda26, à: 6/06/12 13:42

Message édité par: lsda26, à: 6/06/12 14:04<br><br>Message édité par: lsda26, à: 6/06/12 14:04

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

Plus d'informations
il y a 13 ans 11 mois #11944 par SiSMik
Ce ne sont pas des droits d'éxécution sur les scripts qui posent problème pour votre cas.
C'est plutôt un problème de droit pour que powershell se connecte au serveur distant.

Je vous conseil d'ailleurs d'utiliser Invoke-Command, et d'activer WinRM sur les serveurs cibles en utilisant les credentials qui auront les droits.

Un peu comme ceci:
[code:1]$script = 'get-service -name winrm,dns,dhcpserver,dfs,dfsr,mpssvc,certsvc,*antivirus*,wuauserv | sort-object Name | format-table -property MachineName, Name, Status, DisplayName -auto'

Invoke-Command -credential (get-credential) dc-g1 -scriptblock {$script}[/code:1]

A tester voir si ça marche.

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

Plus d'informations
il y a 13 ans 11 mois #11947 par heyraud
Même en saisissant le login et mot de passe de l'administrateur du poste distant, j'ai tourjours des erreurs:
[192.168.2.50] La connexion au serveur distant a échoué avec le message d'erreur suivant : Le client WinRM ne peut pas traiter la demande. Si le modèle d’authentification n’est pas K
erberos, ou si l’ordinateur client n’est pas membre d’un domaine, le transport HTTPS doit être utilisé ou l’ordinateur de destination doit être ajouté au paramètre de configuration T
rustedHosts. Utilisez winrm.cmd pour configurer TrustedHosts. Notez que les ordinateurs dans la liste TrustedHosts ne sont peut-être pas authentifiés. Pour plus d’informations, exécu
tez la commande suivante : winrm help config. Pour plus d'informations, voir la rubrique d'aide about_Remote_Troubleshooting.
+ CategoryInfo : OpenError: (:) [], PSRemotingTransportException
+ FullyQualifiedErrorId : PSSessionStateBroken
Get-Service : Impossible de trouver un service assorti du nom « winrm ».
Au niveau de C:\Users\grouik\Desktop\ping.ps1 : 30 Caractère : 12
+ get-service &lt;&lt;&lt;&lt; -name winrm,dns,dhcpserver,dfs,dfsr,mpssvc,certsvc,*antivirus*,wuauserv -computername $_ | sort-object Name | format-table -property MachineName, Name, Status, Di
splayName -auto
+ CategoryInfo : ObjectNotFound: (winrm:String) [Get-Service], ServiceCommandException
+ FullyQualifiedErrorId : NoServiceFoundForGivenName,Microsoft.PowerShell.Commands.GetServiceCommand

Get-Service : Impossible de trouver un service assorti du nom « dns ».
Au niveau de C:\Users\grouik\Desktop\ping.ps1 : 30 Caractère : 12
+ get-service &lt;&lt;&lt;&lt; -name winrm,dns,dhcpserver,dfs,dfsr,mpssvc,certsvc,*antivirus*,wuauserv -computername $_ | sort-object Name | format-table -property MachineName, Name, Status, Di
splayName -auto
+ CategoryInfo : ObjectNotFound: (dns:String) [Get-Service], ServiceCommandException
+ FullyQualifiedErrorId : NoServiceFoundForGivenName,Microsoft.PowerShell.Commands.GetServiceCommand

Get-Service : Impossible de trouver un service assorti du nom « dhcpserver ».
Au niveau de C:\Users\grouik\Desktop\ping.ps1 : 30 Caractère : 12
+ get-service &lt;&lt;&lt;&lt; -name winrm,dns,dhcpserver,dfs,dfsr,mpssvc,certsvc,*antivirus*,wuauserv -computername $_ | sort-object Name | format-table -property MachineName, Name, Status, Di
splayName -auto
+ CategoryInfo : ObjectNotFound: (dhcpserver:String) [Get-Service], ServiceCommandException
+ FullyQualifiedErrorId : NoServiceFoundForGivenName,Microsoft.PowerShell.Commands.GetServiceCommand

Get-Service : Impossible de trouver un service assorti du nom « dfs ».
Au niveau de C:\Users\grouik\Desktop\ping.ps1 : 30 Caractère : 12
+ get-service &lt;&lt;&lt;&lt; -name winrm,dns,dhcpserver,dfs,dfsr,mpssvc,certsvc,*antivirus*,wuauserv -computername $_ | sort-object Name | format-table -property MachineName, Name, Status, Di
splayName -auto
+ CategoryInfo : ObjectNotFound: (dfs:String) [Get-Service], ServiceCommandException
+ FullyQualifiedErrorId : NoServiceFoundForGivenName,Microsoft.PowerShell.Commands.GetServiceCommand

Get-Service : Impossible de trouver un service assorti du nom « dfsr ».
Au niveau de C:\Users\grouik\Desktop\ping.ps1 : 30 Caractère : 12
+ get-service &lt;&lt;&lt;&lt; -name winrm,dns,dhcpserver,dfs,dfsr,mpssvc,certsvc,*antivirus*,wuauserv -computername $_ | sort-object Name | format-table -property MachineName, Name, Status, Di
splayName -auto
+ CategoryInfo : ObjectNotFound: (dfsr:String) [Get-Service], ServiceCommandException
+ FullyQualifiedErrorId : NoServiceFoundForGivenName,Microsoft.PowerShell.Commands.GetServiceCommand

Get-Service : Impossible de trouver un service assorti du nom « mpssvc ».
Au niveau de C:\Users\grouik\Desktop\ping.ps1 : 30 Caractère : 12
+ get-service &lt;&lt;&lt;&lt; -name winrm,dns,dhcpserver,dfs,dfsr,mpssvc,certsvc,*antivirus*,wuauserv -computername $_ | sort-object Name | format-table -property MachineName, Name, Status, Di
splayName -auto
+ CategoryInfo : ObjectNotFound: (mpssvc:String) [Get-Service], ServiceCommandException
+ FullyQualifiedErrorId : NoServiceFoundForGivenName,Microsoft.PowerShell.Commands.GetServiceCommand

Get-Service : Impossible de trouver un service assorti du nom « certsvc ».
Au niveau de C:\Users\grouik\Desktop\ping.ps1 : 30 Caractère : 12
+ get-service &lt;&lt;&lt;&lt; -name winrm,dns,dhcpserver,dfs,dfsr,mpssvc,certsvc,*antivirus*,wuauserv -computername $_ | sort-object Name | format-table -property MachineName, Name, Status, Di
splayName -auto
+ CategoryInfo : ObjectNotFound: (certsvc:String) [Get-Service], ServiceCommandException
+ FullyQualifiedErrorId : NoServiceFoundForGivenName,Microsoft.PowerShell.Commands.GetServiceCommand

Get-Service : Impossible d'ouvrir le Gestionnaire de contrôle des services sur l'ordinateur '192.168.2.50'. Cette opération requiert des privilèges supplémentaires.
Au niveau de C:\Users\grouik\Desktop\ping.ps1 : 30 Caractère : 12
+ get-service &lt;&lt;&lt;&lt; -name winrm,dns,dhcpserver,dfs,dfsr,mpssvc,certsvc,*antivirus*,wuauserv -computername $_ | sort-object Name | format-table -property MachineName, Name, Status, Di
splayName -auto
+ CategoryInfo : NotSpecified: (:) [Get-Service], InvalidOperationException
+ FullyQualifiedErrorId : System.InvalidOperationException,Microsoft.PowerShell.Commands.GetServiceCommand

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

Plus d'informations
il y a 13 ans 11 mois #11949 par heyraud
Après avoir corrigé un peu la syntax que j'avais mal saisi concernant la commande que vous m'avez donné:
[192.168.2.50] La connexion au serveur distant a échoué avec le message d'erreur suivant : Le client WinRM ne peut pas traiter la demande. Si le modèle d’authentification n’est pas K
erberos, ou si l’ordinateur client n’est pas membre d’un domaine, le transport HTTPS doit être utilisé ou l’ordinateur de destination doit être ajouté au paramètre de configuration T
rustedHosts. Utilisez winrm.cmd pour configurer TrustedHosts. Notez que les ordinateurs dans la liste TrustedHosts ne sont peut-être pas authentifiés. Pour plus d’informations, exécu
tez la commande suivante : winrm help config. Pour plus d'informations, voir la rubrique d'aide about_Remote_Troubleshooting.
+ CategoryInfo : OpenError: (:) [], PSRemotingTransportException
+ FullyQualifiedErrorId : PSSessionStateBroken

J'ai également essayé mon script en utilisant 2 postes dans le même domaine (client connecté avec le login et mot de passe de l'admin du domaine) et celà fonctione bien sans votre commande. Donc il semblerai que le problème vienne bien de l'authentification entre mes 2 machines workgroup<br><br>Message édité par: lsda26, à: 6/06/12 16:30

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

Plus d'informations
il y a 13 ans 11 mois #11973 par SiSMik
Alors là, ça va être un conseil à prendre avec des pincettes, mais si vous passez vos credentials avec get-credential et que vous indiquez un compte qui à les droits qui vont bien sur la machine distante, ça devrait marcher...

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

Plus d'informations
il y a 13 ans 11 mois #11978 par heyraud
Bonsoir,
Je pense aussi que vous avez raison. Parcontre je comprend pas ou est-ce qu'il faut attribuer les droits?
Pour un répertoire ou fichier ok pas de soucis! mais pour powershell? Comment donne t-on les droits à un utilisateur ou un groupe à powershell sur la machine distante? Il faut seulement le droit d'execution?

Désolé je galère...

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

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