Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1944 connectés 

  FORUM HardWare.fr
  Systèmes & Réseaux Pro
  Poste de travail

  ping poste à partir de liste machine (AD)

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

ping poste à partir de liste machine (AD)

n°145197
shusters95
Bon Chance
Posté le 07-03-2017 à 16:07:52  profilanswer
 

bonjour,
j'ai besoin de vos lumières
je m'explique, j'ai besoin de pinger une liste de machine dans un groupe AD,  
pour cela j'ai fais :  
import-module activedirectory
get-adgroupmember "lenomdugroupe" | select samaccountname | export-csv -notypeinformation c:/temps/fichierposte.csv
 
ce que ça me sort :  
 
samaccountname
PR010504086L$
PR010504086L$
PR010504086L$
PR010504086L$
 
 
j'aimerais donc a partir de ce fichier pinger toute la liste de ces poste et me ressortir un autre fichier csv en resultat avec unreachable si ping KO et success si ping OK.
 
avez vous une idée ou si vous pouvez m'éclairer car je séche un peu ...
 
merci d'avance


---------------
http://forum.hardware.fr/forum2.ph [...] w=0&nojs=0
mood
Publicité
Posté le 07-03-2017 à 16:07:52  profilanswer
 

n°145199
nebulios
Posté le 07-03-2017 à 16:46:56  profilanswer
 

Tu construis une array avec et tu envoies ça sur le cmdlet Test-Connection. Je ne me souviens plus s'il accepte le pipe par contre, il faut tester (si ça ne marche pas -> foreach)

n°145203
Wolfman
Modérateur
Lobo'tomizado
Posté le 07-03-2017 à 17:41:33  profilanswer
 

Cadeau :   (en partant d'un fichier contenant une liste de postes, à toi de l'adapter)
 

Citation :


$names = Get-Content ".\Computers.txt"
foreach ($name in $names) {
if ( Test-Connection -ComputerName $name -Count 1 -ErrorAction SilentlyContinue ) {
Write-Host "OK: $name is up" -ForegroundColor Green
}
else {
Write-Host "KO: $name is down" -ForegroundColor Red
}
}

n°145214
shusters95
Bon Chance
Posté le 08-03-2017 à 10:48:03  profilanswer
 

Wolfman a écrit :

Cadeau :   (en partant d'un fichier contenant une liste de postes, à toi de l'adapter)

 
Citation :


$names = Get-Content ".\Computers.txt"
foreach ($name in $names) {
if ( Test-Connection -ComputerName $name -Count 1 -ErrorAction SilentlyContinue ) {
Write-Host "OK: $name is up" -ForegroundColor Green
}
else {
Write-Host "KO: $name is down" -ForegroundColor Red
}
}


 

yop merci pour la réponse tout d'abord !

 

j'ai un soucis lors que je met mon chemin du csv qui ressort il me sort tout mes postes en down, alors qu'en les pingant un par un j'ai des postes qui répondent bien au ping... étrange


Message édité par shusters95 le 08-03-2017 à 10:48:13

---------------
http://forum.hardware.fr/forum2.ph [...] w=0&nojs=0
n°145216
Wolfman
Modérateur
Lobo'tomizado
Posté le 08-03-2017 à 10:50:44  profilanswer
 

Tu as bien enlevé les "$" dans ton fichier CSV ?!

n°145217
shusters95
Bon Chance
Posté le 08-03-2017 à 10:54:17  profilanswer
 

Wolfman a écrit :

Tu as bien enlevé les "$" dans ton fichier CSV ?!

 

Zut j'avais pas vu !

 

mais quel élément rajouter pour qu'il ne me mette pas les $ en sortie
car j'ai voulu rajouter des délimiter ";" mais ça ne passe pas

 


Message édité par shusters95 le 08-03-2017 à 10:58:57

---------------
http://forum.hardware.fr/forum2.ph [...] w=0&nojs=0
n°145230
shusters95
Bon Chance
Posté le 08-03-2017 à 12:57:30  profilanswer
 

import-module ActiveDirectory

 

Get-ADGroupMember "GroupeName" | Select name | export-Csv -NoTypeInformation C:\adit\mon.txt  

 

$content = Get-Content "C:\adit\mon.txt" | foreach { $_ -replace "$","" }
Set-Content -Path "C:\adit\mon.csv" -Value $content

 

$names = Get-Content "C:\temp\mon.txt"
foreach ($name in $names) {
if ( Test-Connection -ComputerName $name -Count 1 -ErrorAction SilentlyContinue ) {
Write-Host "OK: $name is up" -ForegroundColor Green
}
else {
Write-Host "KO: $name is down" -ForegroundColor Red
}
}

  

Il me sort bien les nom de poste sans les dollars mais toujours pareil ça ne ping pas ... resultat sur chaque poste c'est down

 

EDIT : c'est good c''était les " " cette fois ci :)


Message édité par shusters95 le 09-03-2017 à 00:22:30

---------------
http://forum.hardware.fr/forum2.ph [...] w=0&nojs=0
n°145253
Je@nb
Modérateur
Kindly give dime
Posté le 08-03-2017 à 20:32:28  profilanswer
 

J'ai rarement vu un truc aussi crade

n°145255
shusters95
Bon Chance
Posté le 09-03-2017 à 00:21:19  profilanswer
 

Je@nb a écrit :

J'ai rarement vu un truc aussi crade


 
:( pas cool de critiquer... je fais du mieux que je peux, c'est pas mon fort le scripting... désoler si je vous chagrine avec mon code...


---------------
http://forum.hardware.fr/forum2.ph [...] w=0&nojs=0
n°145259
Je@nb
Modérateur
Kindly give dime
Posté le 09-03-2017 à 09:44:16  profilanswer
 

c'est quoi l'intéret de faire un export dans un csv ?
 
Un simple :

Code :
  1. Get-ADGroupMember "GroupeName" |% {
  2. if ( Test-Connection -ComputerName $_.Name -Count 1 -ErrorAction SilentlyContinue ) {
  3. Write-Host "OK: $($_.Name) is up" -ForegroundColor Green
  4. }
  5. else {
  6. Write-Host "KO: $($_.Name) is down" -ForegroundColor Red
  7. }
  8. }

mood
Publicité
Posté le 09-03-2017 à 09:44:16  profilanswer
 

n°145262
shusters95
Bon Chance
Posté le 09-03-2017 à 10:36:48  profilanswer
 

salut effectivement c'est beaucoup plus simple merci Je@nb.

 

par contre j'aimerais juste rajouter une difficulté, c'est que si j'arrive à pinger le poste, il faudrait que le script aille lire une clé de registre et me l'afficher voici ce qui me semble répondre à mon besoin (je devrais juste adapter la clé de registre) :

 
Code :
  1. $distant=[microsoft.win32.registrykey]::openremotebasekey("LOCALMACHINE",$nom_machine)
  2. $val=$distant.opensubkey("SYSTEM\currentcontrolset\control\terminal server" )
  3. $val.getvalue("fdenytsconnections" )
 


ma question est : est ce que je peut mettre un elseif pour exécuter ma condition dans mon if ?

 


merci pour vos réponses, j'aime beaucoup le powershell c'est vraiment sympa, mais j'ai un peu de mal avec la logique à vrais dire
j'aimerais beaucoup me former sur ce langage


Message édité par shusters95 le 09-03-2017 à 12:04:42

---------------
http://forum.hardware.fr/forum2.ph [...] w=0&nojs=0
n°145264
nebulios
Posté le 09-03-2017 à 11:54:48  profilanswer
 

Passe plutôt par un Get-ChildItem pour récupérer une clé de registre. Tu dois pouvoir faire un Test-Path pour vérifier son existence aussi.

n°145271
shusters95
Bon Chance
Posté le 09-03-2017 à 13:46:55  profilanswer
 

yop,
 
si je te suis, si je fais un : Get-ChildItem -Path Registry::HKLM\SYSTEM\CurrentControlSet\services\Tcpip\Parameters | Select-Object searchlist
 
c'est vide alors que j'ai une liste renseigner, ai je oublié une info ?


---------------
http://forum.hardware.fr/forum2.ph [...] w=0&nojs=0
n°145278
Je@nb
Modérateur
Kindly give dime
Posté le 09-03-2017 à 14:56:48  profilanswer
 

Pour ce genre d'infos je préfère passer par SCCM et l'inventaire ou tout autre soft d'inventaire.

 

Après suffit de faire un truc comme ça :

Code :
  1. Get-ADGroupMember "Mongroupe" |% {
  2.     if ( Test-Connection -ComputerName $_.Name -Count 1 -ErrorAction SilentlyContinue ) {
  3.         Write-Host "OK: $($_.Name) is up" -ForegroundColor Green
  4.         $Reg = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey('LocalMachine', $computer1)
  5.         $RegKey= $Reg.OpenSubKey("SYSTEM\currentcontrolset\control\terminal server" )
  6.         $val = $RegKey.GetValue("fdenytsconnections" )
  7.         New-Object -TypeName PSObject -Property  @{"Computer"=$_.Name;"fdenytsconnection"=$val }
  8.     }
  9.     else {
  10.         Write-Host "KO: $($_.Name) is down" -ForegroundColor Red
  11.     }
  12. }


Message édité par Je@nb le 09-03-2017 à 14:57:44
n°145286
shusters95
Bon Chance
Posté le 09-03-2017 à 17:32:10  profilanswer
 

merci encore Je@nb  
 
une dernière chose, concernant ensuite l'exportation du résultat dans un fichier CSV on le fait à la fin du script ou à la fin du if avec une boucle ? (je pencherais pour la deuxième solution)


---------------
http://forum.hardware.fr/forum2.ph [...] w=0&nojs=0
n°145287
Je@nb
Modérateur
Kindly give dime
Posté le 09-03-2017 à 18:27:53  profilanswer
 

à la dernière ligne met un | export-csv -notypeinformation -delimiter ";" -path moncsv.csv et zou

Message cité 1 fois
Message édité par Je@nb le 09-03-2017 à 18:28:10
n°145468
shusters95
Bon Chance
Posté le 20-03-2017 à 10:45:55  profilanswer
 

Je@nb a écrit :

à la dernière ligne met un | export-csv -notypeinformation -delimiter ";" -path moncsv.csv et zou


 
salut j'ai bien mis comme tu m'a dit à la fin après mon :  
 
  Write-Host "KO: $($_.Name) is down" -ForegroundColor Red |  export-csv -notypeinformation -delimiter ";" -path moncsv.csv #Export du résultat en fichier CSV
 
j'ai bien un CSV de crée mais il est vide ...


---------------
http://forum.hardware.fr/forum2.ph [...] w=0&nojs=0
n°145469
Je@nb
Modérateur
Kindly give dime
Posté le 20-03-2017 à 11:02:16  profilanswer
 

ça c'est ligne 10, pas la fin qui est ligne 12 :o

n°145475
shusters95
Bon Chance
Posté le 20-03-2017 à 12:22:05  profilanswer
 

Très bien je l'ai rajouter à la ligne 12  
 
mais j'ai cela lorsque je lance le script  :  
 
cmdlet Export-Csv at command pipeline position 1
Supply values for the following parameters:
InputObject:


---------------
http://forum.hardware.fr/forum2.ph [...] w=0&nojs=0
n°145477
Je@nb
Modérateur
Kindly give dime
Posté le 20-03-2017 à 13:24:53  profilanswer
 

chez moi ça marche :o

n°145506
shusters95
Bon Chance
Posté le 21-03-2017 à 11:47:01  profilanswer
 

 fin de mon script :  
 
  else {
    Write-Host "KO: $($_.Name) is down" -ForegroundColor Red  
    }
 #Export du résultat en fichier CSV
    export-csv -notypeinformation -delimiter ";" -path C:\csv\moncsv.csv }  
 
fin de ma commande PS :  
 
cmdlet Export-Csv at command pipeline position 1
Supply values for the following parameters:
InputObject: (je tape une lettre car il veut une entrée)
 
le fichier csv :  
 
Length
1
 
:o  
 
 


---------------
http://forum.hardware.fr/forum2.ph [...] w=0&nojs=0
n°145507
Je@nb
Modérateur
Kindly give dime
Posté le 21-03-2017 à 11:56:57  profilanswer
 

c'est pas la ligne 12 ni la commande que je t'ai indiqué :o
Je vais la refaire complètement alors ...
 
 

Code :
  1. Get-ADGroupMember "Mongroupe" |% {
  2.     if ( Test-Connection -ComputerName $_.Name -Count 1 -ErrorAction SilentlyContinue ) {
  3.         Write-Host "OK: $($_.Name) is up" -ForegroundColor Green
  4.         $Reg = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey('LocalMachine', $computer1)
  5.         $RegKey= $Reg.OpenSubKey("SYSTEM\currentcontrolset\control\terminal server" )
  6.         $val = $RegKey.GetValue("fdenytsconnections" )
  7.         New-Object -TypeName PSObject -Property  @{"Computer"=$_.Name;"fdenytsconnection"=$val }
  8.     }
  9.     else {
  10.         Write-Host "KO: $($_.Name) is down" -ForegroundColor Red
  11.     }
  12. } | export-csv -notypeinformation -delimiter ";" -path moncsv.csv

n°145530
shusters95
Bon Chance
Posté le 21-03-2017 à 15:23:46  profilanswer
 

Je@nb a écrit :

c'est pas la ligne 12 ni la commande que je t'ai indiqué :o
Je vais la refaire complètement alors ...
 
 

Code :
  1. Get-ADGroupMember "Mongroupe" |% {
  2.     if ( Test-Connection -ComputerName $_.Name -Count 1 -ErrorAction SilentlyContinue ) {
  3.         Write-Host "OK: $($_.Name) is up" -ForegroundColor Green
  4.         $Reg = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey('LocalMachine', $computer1)
  5.         $RegKey= $Reg.OpenSubKey("SYSTEM\currentcontrolset\control\terminal server" )
  6.         $val = $RegKey.GetValue("fdenytsconnections" )
  7.         New-Object -TypeName PSObject -Property  @{"Computer"=$_.Name;"fdenytsconnection"=$val }
  8.     }
  9.     else {
  10.         Write-Host "KO: $($_.Name) is down" -ForegroundColor Red
  11.     }
  12. } | export-csv -notypeinformation -delimiter ";" -path moncsv.csv



 
 
Merci Je@nb
 
Par contre je viens de tilter mais dans le groupMember il y a plusieurs Computer et du coup là il ne lit la clé qu'au $Computer1, non ?


---------------
http://forum.hardware.fr/forum2.ph [...] w=0&nojs=0
n°145532
Je@nb
Modérateur
Kindly give dime
Posté le 21-03-2017 à 15:32:37  profilanswer
 

non, c'est à ça que sert le for each

n°145565
shusters95
Bon Chance
Posté le 22-03-2017 à 10:05:38  profilanswer
 

salut,

 

en faite je trouve étrange que le code que tu m'a filer sur le post d'avant fonctionne car justement tu me parle de for each mais il n'y en a pas donc comment fait il pour boucler, ensuite la variable $computer1 n'est pas déclarer en début de script... étrange

 

(j'essaye de comprendre le script sans faire de copier coller bête)


Message édité par shusters95 le 22-03-2017 à 10:08:45

---------------
http://forum.hardware.fr/forum2.ph [...] w=0&nojs=0
n°145569
Wolfman
Modérateur
Lobo'tomizado
Posté le 22-03-2017 à 10:14:28  profilanswer
 

C'est du .Net. Explications ici par exemple : https://www.reddit.com/r/PowerShell [...] ce_please/
 

Citation :

where $computer1 is the remote machine.

n°145573
Je@nb
Modérateur
Kindly give dime
Posté le 22-03-2017 à 10:21:00  profilanswer
 

Le foreach c'est le |% { }
 
Par contre en effet le $computer1 c'est faux, ça doit être $_.Name désolé.

n°145581
shusters95
Bon Chance
Posté le 22-03-2017 à 11:20:42  profilanswer
 

du coup $computer1 c'est une sorte de variable remote ?

 

je laisse $computer1 :

Code :
  1. KO: POSTE1 is down
  2. OK: POSTE2 is up
  3. You cannot call a method on a null-valued expression.
  4. At C:\Users\user\Desktop\script.ps1:8 char:32
  5. +         $val = $RegKey.GetValue <<<< ("version" )
  6.     + CategoryInfo          : InvalidOperation: (GetValue:String) [], RuntimeException
  7.     + FullyQualifiedErrorId : InvokeMethodOnNull
 


et si je met $_.Name

 
Code :
  1. KO: POSTE1 is down
  2. OK: POSTE2 is up
  3. Exception calling "OpenSubKey" with "1" argument(s): "Requested registry access is not allowed."
  4. At C:\Users\user\Desktop\script.ps1:7 char:33
  5. +         $RegKey= $Reg.OpenSubKey <<<< ("SOFTWARE\GS\packages\key" )
  6.     + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
  7.     + FullyQualifiedErrorId : DotNetMethodException
  8. You cannot call a method on a null-valued expression.
  9. At C:\Users\user\Desktop\script.ps1:8 char:32
  10. +         $val = $RegKey.GetValue <<<< ("version" )
  11.     + CategoryInfo          : InvalidOperation: (GetValue:String) [], RuntimeException
  12.     + FullyQualifiedErrorId : InvokeMethodOnNull
 

je comprends pas il me dit que c'est null la clé de registre alors qu'elle existe bien...


Message édité par shusters95 le 22-03-2017 à 11:23:36

---------------
http://forum.hardware.fr/forum2.ph [...] w=0&nojs=0
n°145585
Je@nb
Modérateur
Kindly give dime
Posté le 22-03-2017 à 11:43:57  profilanswer
 

$computer1 c'est rien, c'est vide, c'est un mauvais copié collé de ton premier script.
 
L'erreur est claire pourtant "Requested registry access is not allowed."

n°145599
shusters95
Bon Chance
Posté le 22-03-2017 à 15:15:57  profilanswer
 

C'est vraiment étrange quand même je m'explique :

 

Je teste avec deux clés de registres :

Symantec Endpoint Protection

 

- Je test avec la variable $computer1 = ça marche sans soucis j'ai la liste des machines extrait en CSV.
https://s10.postimg.org/498awcbv9/pdt.png
https://s10.postimg.org/3wbut1n9x/csvpdt.png
- Puis je test maitenant avec la variable en lieu et place $_.Name comme tu m'a dit = et la même erreur :

 

https://s7.postimg.org/qme7dgeef/Capture.png
https://s11.postimg.org/8ot61sghr/CsvNook.png

 

Exception calling "OpenSubKey" with "1" argument(s): "Requested registry access is not allowed."
At C:\Users\\Desktop\bfz\ty.ps1:7 char:33
+         $RegKey= $Reg.OpenSubKey <<<< ("SOFTWARE\SG\packages\Symantec DLP" )
    + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
    + FullyQualifiedErrorId : DotNetMethodException

 

You cannot call a method on a null-valued expression.
At C:\Users\\Desktop\bfz\ty.ps1:8 char:32
+         $val = $RegKey.GetValue <<<< ("version" )
    + CategoryInfo          : InvalidOperation: (GetValue:String) [], RuntimeException
    + FullyQualifiedErrorId : InvokeMethodOnNull

 

Je ne comprends pas car ça fonctionne bien avec l'autre variable et de plus je suis bien en ADMIN.

Maintenant avec mon autre clé de registre "BufferZone"

- avec la variable computer1 :
https://s4.postimg.org/42etwszll/bzvarcompu.png
- avec la variable name
https://s13.postimg.org/4ybh4o9df/bzname.png

 

pareil je lance toujours en admin, du coup incompréhension de ma part avec la variable $name et $computer1 (qui sort de nule part, le mauvais copier coller, mais qui fonctionne :lol:)

 



Message édité par shusters95 le 22-03-2017 à 15:24:24

---------------
http://forum.hardware.fr/forum2.ph [...] w=0&nojs=0
n°145618
Je@nb
Modérateur
Kindly give dime
Posté le 23-03-2017 à 10:09:05  profilanswer
 

normal vu que $computer1 est vide du coup il prend le pc local et pour lui tu as les droits ... Mais toutes les clés vont être les même vu que à chaque fois il va interroger le pc local et pas le pc de la variable :D. Ya pas de magie hein .... La colonne Computer c'est le script qui la génère et c'est $_.Name qu'il affiche.
 
Et qd tu utilises $_.Name, il essaie bien de se connecter sur l'ordinateur distant mais il n'y arrive pas. L'erreur est claire tu as pas les droits de faire du remote registry. Donc donne toi les droits et tu pourras le faire.
Quand à l'autre erreur c'est que la clé n'existe pas.

n°145640
shusters95
Bon Chance
Posté le 23-03-2017 à 16:06:46  profilanswer
 

J'ai mieux compris en effet cette histoire de droit et de variable en effet. :jap:

 

Merci ça fonctionne beaucoup mieux avec les droits :o

 

par contre petit hic il ne me renseigne pas les poste DOWN dans mon CSV, bizarre non ?

 

autre question, si je veux rajouter un deuxième ou trosième groupemember, ce que je fait c'est que je copie et colle le bloc d'instruction et je change juste le groupe member, je n'ai pas trouver la solution plus légère

 

j'ai trouvé ça : https://social.technet.microsoft.co [...] powershell

 

et en essayant de mettre un AND j'ai des erreurs


Message édité par shusters95 le 23-03-2017 à 16:38:13

---------------
http://forum.hardware.fr/forum2.ph [...] w=0&nojs=0
n°145646
Je@nb
Modérateur
Kindly give dime
Posté le 23-03-2017 à 16:38:23  profilanswer
 

non c'est pas bizarre il génère pas d'objets s'il est down
si tu veux qu'il génère qqch suffit de sortir un psobject avec les infos que tu veux
 
 
suffit de faire un tableau des groupes et faire un foreach de chaque groupe
 
$groups = @("GROUP1","GROUP2" )
 
puis
 
foreach ($group in $groups) {
 Get-ADGroupMember $group ...
}

n°145662
shusters95
Bon Chance
Posté le 24-03-2017 à 10:03:56  profilanswer
 

Je@nb a écrit :

non c'est pas bizarre il génère pas d'objets s'il est down
si tu veux qu'il génère qqch suffit de sortir un psobject avec les infos que tu veux

 


suffit de faire un tableau des groupes et faire un foreach de chaque groupe

 

$groups = @("GROUP1","GROUP2" )

 

puis

 

foreach ($group in $groups) {
 Get-ADGroupMember $group ...
}

 


Le psobject comme pour le UP ?

 

Pour le foreach ça se présenterais comme ça ? :

 
Code :
  1. $group = @("GROUP1","GROUP2" )
  2. foreach ($group in $groups) {
  3. Get-ADGroupMember $group |
  4.     if ( Test-Connection -ComputerName $_.Name -Count 1 -ErrorAction SilentlyContinue ) {
  5.         Write-Host "OK: $($_.Name) is up" -ForegroundColor Green
  6.         $Reg = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey('LocalMachine',  $_.Name)
  7.         $RegKey= $Reg.OpenSubKey("SYSTEM\currentcontrolset\control\terminal server" )
  8.         $val = $RegKey.GetValue("fdenytsconnections" )
  9.         New-Object -TypeName PSObject -Property  @{"Computer"=$_.Name;"fdenytsconnection"=$val }
  10.     }
  11.     else {
  12.         Write-Host "KO: $($_.Name) is down" -ForegroundColor Red
  13.     }
  14. } | export-csv -notypeinformation -delimiter ";" -path moncsv.csv
 

Du coup si je comprends bien si je veux qu'il lise une deuxième clé et l'inserer dans le tableau en comparaison :

 
Code :
  1. $group = @("GROUP1","GROUP2" )
  2. foreach ($group in $groups) {
  3. Get-ADGroupMember $group |
  4.     if ( Test-Connection -ComputerName $_.Name -Count 1 -ErrorAction SilentlyContinue ) {
  5.         Write-Host "OK: $($_.Name) is up" -ForegroundColor Green
  6.         $Reg = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey('LocalMachine', $_.Name)
  7.         $RegKey= $Reg.OpenSubKey("SOFTWARE\GS\packages\BufferZone BufferZone"  )
  8.         $val = "NO"
  9.         $val = $RegKey.GetValue("version" )
  10.         New-Object -TypeName PSObject -Property  @{"Computer"=$_.Name;"version"=$val
  11.        
  12.         $Reg2 = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey('LocalMachine',  $_.Name)
  13.         $RegKey2= $Reg2.OpenSubKey("SYSTEM\currentcontrolset\control\terminal server" )
  14.         $val2 = $RegKey2.GetValue("fdenytsconnections" )
  15.         New-Object -TypeName PSObject -Property  @{"Computer"=$_.Name;"fdenytsconnection"=$val2 }
  16.     }
  17.     else {
  18.         Write-Host "KO: $($_.Name) is down" -ForegroundColor Red
  19.     }
  20. } | export-csv -notypeinformation -delimiter ";" -path moncsv.csv


Message édité par shusters95 le 24-03-2017 à 12:51:24

---------------
http://forum.hardware.fr/forum2.ph [...] w=0&nojs=0
n°145668
shusters95
Bon Chance
Posté le 24-03-2017 à 12:39:57  profilanswer
 

Voici mon script derniere version
En suivant vos indication des modification
et en plus une clé que j'ai rajouter pour comparaison

 

qu'en pensez vous ?

 


Code :
  1. #Import modules AD
  2. import-module ActiveDirectory
  3. $groups = @("G1","G2" )
  4.     foreach ($group in $groups) {
  5. Get-ADGroupMember $group |% {
  6. #Si on arrive à pinger
  7.     if ( Test-Connection -ComputerName $_.Name -Count 1 -ErrorAction SilentlyContinue ) {
  8.         Write-Host "OK: $($_.Name) is up" -ForegroundColor Green
  9. #Vérification de la clé 1
  10.         $Reg = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey('LocalMachine', $_.Name)
  11.         $RegKey= $Reg.OpenSubKey("SOFTWARE\GS\packages\BufferZone BufferZone"  )
  12.         $val = "NO KEY"
  13.         $val = $RegKey.GetValue("version" )
  14.         New-Object -TypeName PSObject -Property  @{"Computer"=$_.Name;"version"=$val }
  15.         #Vérification de la clé 2
  16.         $Reg1 = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey('LocalMachine', $_.Name)
  17.         $RegKey1= $Reg1.OpenSubKey("SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\key"  )
  18.         $val1 = "NO KEY"
  19.         $val1 = $RegKey1.GetValue("DisplayVersion" )
  20.         New-Object -TypeName PSObject -Property  @{"Computer"=$_.Name;"version uni"=$val2 }
  21.     }
  22. #Sinon KO
  23.     else {
  24.     Write-Host "KO: $($_.Name) is down" -ForegroundColor Red 
  25.     New-Object -TypeName PSObject -Property  @{"Computer"=$_.Name;"version"="NO PING"
  26.     }
  27. #Export du résultat en fichier CSV
  28.     }
  29. }
  30. }| export-csv -notypeinformation -delimiter ";" -path C:\csv\moncsvv.csv
 


j'ai une erreur à la fin : au niveau de mon export-csv, c'est mon pipe qui gêne

 

An empty pipe element is not allowed.
    + CategoryInfo          : ParserError: (:) [], ParseException
    + FullyQualifiedErrorId : EmptyPipeElement


Message édité par shusters95 le 24-03-2017 à 12:51:09

---------------
http://forum.hardware.fr/forum2.ph [...] w=0&nojs=0
n°145669
Je@nb
Modérateur
Kindly give dime
Posté le 24-03-2017 à 14:07:58  profilanswer
 

Manque un s à group ligne 1 ...
Sinon un truc du genre ça peut le faire mieux

Code :
  1. $groups = @("GROUP1","GROUP2" )
  2. $regkeys = @("SOFTWARE\SG\packages\BufferZone BufferZone\version",
  3. "SYSTEM\currentcontrolset\control\terminal server\fdenytsconnections" )
  4. $computerlist = @($groups |% { Get-ADGroupMember $_ } | select -Unique)
  5. $result = foreach ($computer in $computerlist) {
  6.    
  7.     $resulthash = @{"Name" = $computer.Name; "Status" = "DOWN" }
  8.     foreach ($regkey in $regkeys) { $resulthash[$regkey]="" }
  9.     if ( Test-Connection -ComputerName $computer.Name -Count 1 -ErrorAction SilentlyContinue ) {
  10.         Write-Host "OK: $($computer.Name) is up" -ForegroundColor Green
  11.         $resulthash["Status"] = "UP"
  12.        
  13.         $Reg = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey('LocalMachine', $computer.Name)
  14.            
  15.         foreach ($regkey in $regkeys) {
  16.             $RegKeyObject= $Reg.OpenSubKey($regkey.Substring(0,$regkey.LastIndexOf("\" )))
  17.             $resulthash[$regkey] = $RegKeyObject.GetValue($regkey.Substring($regkey.LastIndexOf("\" )+1,$regkey.Length-$regkey.LastIndexOf("\" )-1))
  18.         }
  19.        
  20.        
  21.     }
  22.     else {
  23.         Write-Host "KO: $($_.Name) is down" -ForegroundColor Red
  24.     }
  25.    
  26.     New-Object -TypeName PSObject -Property $resulthash
  27. }
  28. $result | export-csv -notypeinformation -delimiter ";" -path moncsv.csv

n°145670
nebulios
Posté le 24-03-2017 à 14:35:34  profilanswer
 

"Powershell in a month of lunches" c'est bien pour démarrer  :o

n°145672
Wolfman
Modérateur
Lobo'tomizado
Posté le 24-03-2017 à 14:44:02  profilanswer
 

Ca ? https://www.amazon.fr/Learn-Windows [...] b_title_bk

 

C'est bien comme bouquin ? Je suis un bitos en powershell, mais vu mon métier ça serait bien que je m'y plonge quand même :o


Message édité par Wolfman le 24-03-2017 à 14:44:13
n°145673
nebulios
Posté le 24-03-2017 à 15:46:09  profilanswer
 

Testé et validé  :jap:
 
Pour du script/automatisation il faut aussi ajouter Powershell Toolmaking in a month of lunches. Les deux auteurs sont les références sur Powershell après Jeffrey Snover.
 
En plus, pas besoin de connaissances en programmation/algo, ce sont des livres vraiment orientés admin et production.
Même un blaireau en scripting comme moi a réussi à en tirer quelque chose, c'est dire  :jap:


Message édité par nebulios le 24-03-2017 à 15:57:26
n°145675
Wolfman
Modérateur
Lobo'tomizado
Posté le 24-03-2017 à 16:04:04  profilanswer
 

Vu que je dois être au même niveau de blaireausité que toi, voire pire, je me le mets sous le coude :D

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Systèmes & Réseaux Pro
  Poste de travail

  ping poste à partir de liste machine (AD)

 

Sujets relatifs
[Powershell] Reset mot de passe de plusieurs utilisateurs [AD DS]Erreur remontée de poste OCS inventory
Délégation AD à vos RHClient LDAP [AD DS] W2012
Restreindre l'ouverture de session a un poste[Résolu] Pb lors de tentative de propotion d'un serveur 2012R2 en AD.
Migration AD 2008R2 vers 2012R2 - cas du serveur DNSPoste qui accède a tout, mais ne ping pas tout?
Plus de sujets relatifs à : ping poste à partir de liste machine (AD)


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR