Question Win32_pingStatus +Get-QADComputer

Plus d'informations
il y a 17 ans 3 mois #3335 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?

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

Plus d'informations
il y a 17 ans 3 mois #3340 par Laurent Dardenne
Salut,
chm69 écrit:

Quelqu'un a-t-il une explication?

Tu interroges une classe WMI qui ne posséde pas d'instance au moment de cet appel.
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.

Plus d'informations
il y a 17 ans 3 mois #3344 par michault
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?;)

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

Plus d'informations
il y a 17 ans 3 mois #3350 par Laurent Dardenne
chm69 écrit:

Qu'en penses-tu Laurent?;)

Du moment qu'il répond au besoin c'est le principal de plus il est lisible donc maintenable :P

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
Propulsé par Kunena