Question
Win32_pingStatus +Get-QADComputer
- michault
- Auteur du sujet
- Hors Ligne
- Membre premium
-
Réduire
Plus d'informations
- Messages : 128
- Remerciements reçus 0
il y a 17 ans 3 mois #3335
par michault
Win32_pingStatus +Get-QADComputer a été créé par michault
bonjour,
J'ai déjà utiliser la class Win32_pingstatus\" pour ping des PC dans des scripts précédents.
Cette fois, je boucle sur mes PC de l'AD grâce à Get-QADComputer.
Dans cette boucle, je veux vérifier que le PC est joignable par ping afin de modifier la passerelle.
[code:1]#SetGateway.ps1
# Paramètres: $ouparm :L'Unité d'Organisation dont on veut récupérer les ordinateurs.
# $who : Quels PC exemple PC*
# $gateway : Passerelle
# $log : Fichier log
Param($ouparm , $who, $gateway, $log)
#Définition des constantes
$domain = \",DC=domaine,DC=fr\"
$OU= $ouparm + $domain
get-QADComputer -searchRoot $OU -ErrorAction SilentlyContinue | Select-Object Name | where {$_.Name -like $who} |
ForEach-Object {
$PingStatus = Get-WmiObject -class \"Win32_PingStatus\" -computerName $_.Name | Select-Object StatusCode
$_.Name + \" : PingStatus : \" + $PingStatus.StatusCode | Out-File $log -Append -NoClobber
if ($PingStatus.StatusCode -eq 0)
{
$colItems = get-wmiobject -class \"Win32_NetworkAdapterConfiguration\" `
-ComputerName $_.Name -ErrorAction SilentlyContinue -ErrorVariable wmierror | where{$_.IpEnabled -match \"True\"}
Foreach ($objItem in $colItems) {
$objItem.SetGateways($gateway)
if ($?)
{
$_.Name + \" : Passerelle basculée en \" + $gateway | Out-File $log -Append -NoClobber
}
else
{
$_.Name + \" : Echec de changement de passerelle \" | Out-File $log -Append -NoClobber
}
}
}
else
{
$_.Name + \" : PC injoignable\" | Out-File $log -Append -NoClobber
}
}[/code:1]
Quand je test sur un PC j'ai le message d'erreur suivant:
Get-WmiObject : Non pris en charge
Au niveau de C:\PWRSHELL\EXPLOITATION\SetGateway.ps1 : 15 Caractère : 28
+ $PingStatus = Get-WmiObject <<<< -class \"Win32_PingStatus\" -computerName $_.Name | Select-Object StatusCode
Quelqu'un a-t-il une explication?
J'ai déjà utiliser la class Win32_pingstatus\" pour ping des PC dans des scripts précédents.
Cette fois, je boucle sur mes PC de l'AD grâce à Get-QADComputer.
Dans cette boucle, je veux vérifier que le PC est joignable par ping afin de modifier la passerelle.
[code:1]#SetGateway.ps1
# Paramètres: $ouparm :L'Unité d'Organisation dont on veut récupérer les ordinateurs.
# $who : Quels PC exemple PC*
# $gateway : Passerelle
# $log : Fichier log
Param($ouparm , $who, $gateway, $log)
#Définition des constantes
$domain = \",DC=domaine,DC=fr\"
$OU= $ouparm + $domain
get-QADComputer -searchRoot $OU -ErrorAction SilentlyContinue | Select-Object Name | where {$_.Name -like $who} |
ForEach-Object {
$PingStatus = Get-WmiObject -class \"Win32_PingStatus\" -computerName $_.Name | Select-Object StatusCode
$_.Name + \" : PingStatus : \" + $PingStatus.StatusCode | Out-File $log -Append -NoClobber
if ($PingStatus.StatusCode -eq 0)
{
$colItems = get-wmiobject -class \"Win32_NetworkAdapterConfiguration\" `
-ComputerName $_.Name -ErrorAction SilentlyContinue -ErrorVariable wmierror | where{$_.IpEnabled -match \"True\"}
Foreach ($objItem in $colItems) {
$objItem.SetGateways($gateway)
if ($?)
{
$_.Name + \" : Passerelle basculée en \" + $gateway | Out-File $log -Append -NoClobber
}
else
{
$_.Name + \" : Echec de changement de passerelle \" | Out-File $log -Append -NoClobber
}
}
}
else
{
$_.Name + \" : PC injoignable\" | Out-File $log -Append -NoClobber
}
}[/code:1]
Quand je test sur un PC j'ai le message d'erreur suivant:
Get-WmiObject : Non pris en charge
Au niveau de C:\PWRSHELL\EXPLOITATION\SetGateway.ps1 : 15 Caractère : 28
+ $PingStatus = Get-WmiObject <<<< -class \"Win32_PingStatus\" -computerName $_.Name | Select-Object StatusCode
Quelqu'un a-t-il une explication?
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 17 ans 3 mois #3340
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:Win32_pingStatus +Get-QADComputer
Salut,
chm69 écrit:
La suite
[code:1]
#Erreur
Get-WmiObject -class Win32_PingStatus -computerName localhost
#Ok
Get-WmiObject -query \"SELECT * FROM Win32_PingStatus WHERE Address='127.0.0.1'\"[/code:1]
chm69 écrit:
Tu interroges une classe WMI qui ne posséde pas d'instance au moment de cet appel.Quelqu'un a-t-il une explication?
La suite
[code:1]
#Erreur
Get-WmiObject -class Win32_PingStatus -computerName localhost
#Ok
Get-WmiObject -query \"SELECT * FROM Win32_PingStatus WHERE Address='127.0.0.1'\"[/code:1]
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- michault
- Auteur du sujet
- Hors Ligne
- Membre premium
-
Réduire
Plus d'informations
- Messages : 128
- Remerciements reçus 0
il y a 17 ans 3 mois #3344
par michault
Réponse de michault sur le sujet Re:Win32_pingStatus +Get-QADComputer
Merci pour ta réponse.
J'ai finalement opté pour une syntaxe encore plus simple que j'ai trouvé sur ce site qui est une vraie mine d'or.
[code:1]#SetGateway.ps1
# Paramètres: $ouparm :L'Unité d'Organisation dont on veut récupérer les ordinateurs.
# $who : Quels PC exemple PC*
# $gateway : Passerelle
# $log : Fichier log
Param($ouparm , $who, $gateway, $log)
#Définition des constantes
$domain = \",DC=domaine,DC=fr\"
$OU= $ouparm + $domain
get-QADComputer -searchRoot $OU -ErrorAction SilentlyContinue |Select-Object Name | where {$_.Name -like $who} |
ForEach-Object {
Ping.exe $_.Name -n 1 > $null
if ($Lastexitcode -eq 0)
{
$colItems = get-wmiobject -class \"Win32_NetworkAdapterConfiguration\" `
-ComputerName $_.Name -ErrorAction SilentlyContinue -ErrorVariable wmierror | where{$_.IpEnabled -match \"True\"}
Foreach ($objItem in $colItems) {
$objItem.SetGateways($gateway)
if ($?)
{
$_.Name + \" : Passerelle basculée en \" + $gateway | Out-File $log -Append -NoClobber
}
else
{
$_.Name + \" : Echec de changement de passerelle \" | Out-File $log -Append -NoClobber
}
}
}
else
{
$_.Name + \" : PC injoignable \"| Out-File $log -Append -NoClobber
}
}[/code:1]
Qu'en penses-tu Laurent?
J'ai finalement opté pour une syntaxe encore plus simple que j'ai trouvé sur ce site qui est une vraie mine d'or.
[code:1]#SetGateway.ps1
# Paramètres: $ouparm :L'Unité d'Organisation dont on veut récupérer les ordinateurs.
# $who : Quels PC exemple PC*
# $gateway : Passerelle
# $log : Fichier log
Param($ouparm , $who, $gateway, $log)
#Définition des constantes
$domain = \",DC=domaine,DC=fr\"
$OU= $ouparm + $domain
get-QADComputer -searchRoot $OU -ErrorAction SilentlyContinue |Select-Object Name | where {$_.Name -like $who} |
ForEach-Object {
Ping.exe $_.Name -n 1 > $null
if ($Lastexitcode -eq 0)
{
$colItems = get-wmiobject -class \"Win32_NetworkAdapterConfiguration\" `
-ComputerName $_.Name -ErrorAction SilentlyContinue -ErrorVariable wmierror | where{$_.IpEnabled -match \"True\"}
Foreach ($objItem in $colItems) {
$objItem.SetGateways($gateway)
if ($?)
{
$_.Name + \" : Passerelle basculée en \" + $gateway | Out-File $log -Append -NoClobber
}
else
{
$_.Name + \" : Echec de changement de passerelle \" | Out-File $log -Append -NoClobber
}
}
}
else
{
$_.Name + \" : PC injoignable \"| Out-File $log -Append -NoClobber
}
}[/code:1]
Qu'en penses-tu Laurent?
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 17 ans 3 mois #3350
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:Win32_pingStatus +Get-QADComputer
chm69 écrit:

Vérifie si le cmdlet get-QADComputer posséde une propriété Name cela peut simplifier la requête et sinon le select name me semble redondant.
Du moment qu'il répond au besoin c'est le principal de plus il est lisible donc maintenableQu'en penses-tu Laurent?
Vérifie si le cmdlet get-QADComputer posséde une propriété Name cela peut simplifier la requête et sinon le select name me semble redondant.
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.091 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- Win32_pingStatus +Get-QADComputer