Question
Problème de test-connection au niveau logiciel
- Tony Thoumassin
- Auteur du sujet
- Hors Ligne
- Nouveau membre
Réduire
Plus d'informations
- Messages : 14
- Remerciements reçus 0
il y a 8 ans 9 mois #20257
par Tony Thoumassin
Problème de test-connection au niveau logiciel a été créé par Tony Thoumassin
Bonjour à tous,
je débute un peu en Powershell (3 script à mon compteur), et j'ai un soucis sur celui que je suis en train de faire :
Mon logiciel : Powershell Studio 2015
Pour le contexte :
Application avec interface graphique qui récupère tous les PC sur le serveur de l'entreprise (avec leurs nom, leurs commentaires et leurs adresse IP) et les affiches dans un label. Par la suite, on pourra double cliquer sur le nom du pc pour ouvrir une fenêtre TeamViewer pré-rempli pour prendre la main directement sur le poste.
Mon problème se situe au niveau de la récupération de l'adresse IP, dont voici mon code :
[code:1] $requetenet = net.exe view | findstr `\`\
$requetenom = switch -regex (NET.EXE VIEW) { \"^\\\\(?<Name>\S+)\s+\" { $matches.Name } }
add-content $test -Value $requetenet
add-content $test2 -Value $requetenom
$testnom = Get-Content $test2
foreach ($pc in $testnom)
{
$testconnection = Test-Connection $pc -Quiet -Count 1
if ($testconnection -eq $true)
{
$ippc = Test-Connection $pc -Count 1 | select IPV4Address
$ippc = ($ippc | Out-String -Stream | Select-String \"[0;9]\"«»)
$ippc = ($ippc | Out-String)
$ippc = $ippc.Trim()
Add-Content $test3 -Value \"$pc; $ippc\"
}
else
{
}
}
Write-Host \"j'ai fini de recup les ip de tout le monde !!\"[/code:1]
Et mon problème est que tous les PC sont récupérés, si je fais mon test-connection dans la console Powershell, je reçois bien l'adresse IP de chaque PC mais lorsque je lance mon script depuis l'application graphique qui en découle, seul 6 adresse IP sont rempli sur la 50aine de poste présent sur l'entreprise. En faisant un débuggage, je me suis rendu compte que mon \"Test-Connection $pc -Count 1 | select IPV4Address\" renvoie (Empty) des fois alors qu'il me renvoie l'adresse dans la console ...
Si des fois vous auriez une solution pour optimiser mon code, régler mon problème, je suis preneur ..
Encore désolé pour le post un peu long, en espérant avoir été assez précis
Merci d'avance pour votre aide
PS: je suis sous windows 7 et la majorité des postes le sont (certains des postes serveurs sont encore sous XP cependant)
je débute un peu en Powershell (3 script à mon compteur), et j'ai un soucis sur celui que je suis en train de faire :
Mon logiciel : Powershell Studio 2015
Pour le contexte :
Application avec interface graphique qui récupère tous les PC sur le serveur de l'entreprise (avec leurs nom, leurs commentaires et leurs adresse IP) et les affiches dans un label. Par la suite, on pourra double cliquer sur le nom du pc pour ouvrir une fenêtre TeamViewer pré-rempli pour prendre la main directement sur le poste.
Mon problème se situe au niveau de la récupération de l'adresse IP, dont voici mon code :
[code:1] $requetenet = net.exe view | findstr `\`\
$requetenom = switch -regex (NET.EXE VIEW) { \"^\\\\(?<Name>\S+)\s+\" { $matches.Name } }
add-content $test -Value $requetenet
add-content $test2 -Value $requetenom
$testnom = Get-Content $test2
foreach ($pc in $testnom)
{
$testconnection = Test-Connection $pc -Quiet -Count 1
if ($testconnection -eq $true)
{
$ippc = Test-Connection $pc -Count 1 | select IPV4Address
$ippc = ($ippc | Out-String -Stream | Select-String \"[0;9]\"«»)
$ippc = ($ippc | Out-String)
$ippc = $ippc.Trim()
Add-Content $test3 -Value \"$pc; $ippc\"
}
else
{
}
}
Write-Host \"j'ai fini de recup les ip de tout le monde !!\"[/code:1]
Et mon problème est que tous les PC sont récupérés, si je fais mon test-connection dans la console Powershell, je reçois bien l'adresse IP de chaque PC mais lorsque je lance mon script depuis l'application graphique qui en découle, seul 6 adresse IP sont rempli sur la 50aine de poste présent sur l'entreprise. En faisant un débuggage, je me suis rendu compte que mon \"Test-Connection $pc -Count 1 | select IPV4Address\" renvoie (Empty) des fois alors qu'il me renvoie l'adresse dans la console ...
Si des fois vous auriez une solution pour optimiser mon code, régler mon problème, je suis preneur ..
Encore désolé pour le post un peu long, en espérant avoir été assez précis
Merci d'avance pour votre aide
PS: je suis sous windows 7 et la majorité des postes le sont (certains des postes serveurs sont encore sous XP cependant)
Connexion ou Créer un compte pour participer à la conversation.
- Tony Thoumassin
- Auteur du sujet
- Hors Ligne
- Nouveau membre
Réduire
Plus d'informations
- Messages : 14
- Remerciements reçus 0
il y a 8 ans 9 mois #20266
par Tony Thoumassin
Réponse de Tony Thoumassin sur le sujet Re:Problème de test-connection au niveau logiciel
J'ai trouvé la solution tout seul comme un grand mais je ne la comprend pas, au lieu de faire :
[code:1]$ippc = ($ippc | Out-String -Stream | Select-String [0;9])[/code:1]
je fais :
[code:1]$ippc = ($ippc | Out-String -Stream | Select -Index 3)[/code:1]
et là ça me les récupèrent toutes ...
Quelqu'un saurait pourquoi ?
[code:1]$ippc = ($ippc | Out-String -Stream | Select-String [0;9])[/code:1]
je fais :
[code:1]$ippc = ($ippc | Out-String -Stream | Select -Index 3)[/code:1]
et là ça me les récupèrent toutes ...
Quelqu'un saurait pourquoi ?
Connexion ou Créer un compte pour participer à la conversation.
- Axel
- Hors Ligne
- Membre elite
Réduire
Plus d'informations
- Messages : 176
- Remerciements reçus 0
il y a 8 ans 9 mois #20268
par Axel
Réponse de Axel sur le sujet Re:Problème de test-connection au niveau logiciel
Bonjour PStagiaire
-Index <Int32[]>
S?lectionne les objets d'un tableau en fonction de leurs valeurs d'index. Entrez les index dans une liste s?par
?e par des virgules.
Les index d'un tableau commencent par 0, o? 0 repr?sente la premi?re valeur et (n-1) repr?sente la derni?re val
eur.
j'espère t'avoir aidé !<br><br>Message édité par: Harcide, à: 23/06/15 12:02
-Index <Int32[]>
S?lectionne les objets d'un tableau en fonction de leurs valeurs d'index. Entrez les index dans une liste s?par
?e par des virgules.
Les index d'un tableau commencent par 0, o? 0 repr?sente la premi?re valeur et (n-1) repr?sente la derni?re val
eur.
j'espère t'avoir aidé !<br><br>Message édité par: Harcide, à: 23/06/15 12:02
Connexion ou Créer un compte pour participer à la conversation.
- Philippe
- Hors Ligne
- Modérateur
Réduire
Plus d'informations
- Messages : 1778
- Remerciements reçus 21
il y a 8 ans 9 mois #20269
par Philippe
Réponse de Philippe sur le sujet Re:Problème de test-connection au niveau logiciel
une autre solution pour n'avoir que l'adresse IP :
[code:1]((Test-Connection -Count 1 -ComputerName $pc).IPV4Address).IPAddressToString[/code:1]
et donc remplacé ça :
[code:1] $ippc = Test-Connection $pc -Count 1 | select IPV4Address
$ippc = ($ippc | Out-String -Stream | Select-String \"[0;9]\"«»)
$ippc = ($ippc | Out-String)
$ippc = $ippc.Trim()
[/code:1]
par ça :
[code:1]$ippc = ((Test-Connection -Count 1 -ComputerName $pc).IPV4Address).IPAddressToString
[/code:1]
powershell te renvoie des objets, à toi de les utilisés :
[code:1]
PS C:\Users\xxx> Test-Connection -Count 1 -ComputerName $pc|Get-Member
TypeName : System.Management.ManagementObject#root\cimv2\Win32_PingStatus
Name MemberType Definition
----
PSComputerName AliasProperty PSComputerName = __SERVER
Address Property string Address {get;set;}
BufferSize Property uint32 BufferSize {get;set;}
NoFragmentation Property bool NoFragmentation {get;set;}
PrimaryAddressResolutionStatus Property uint32 PrimaryAddressResolutionStatus {get;set;}
ProtocolAddress Property string ProtocolAddress {get;set;}
ProtocolAddressResolved Property string ProtocolAddressResolved {get;set;}
RecordRoute Property uint32 RecordRoute {get;set;}
ReplyInconsistency Property bool ReplyInconsistency {get;set;}
ReplySize Property uint32 ReplySize {get;set;}
ResolveAddressNames Property bool ResolveAddressNames {get;set;}
ResponseTime Property uint32 ResponseTime {get;set;}
ResponseTimeToLive Property uint32 ResponseTimeToLive {get;set;}
RouteRecord Property string[] RouteRecord {get;set;}
RouteRecordResolved Property string[] RouteRecordResolved {get;set;}
SourceRoute Property string SourceRoute {get;set;}
SourceRouteType Property uint32 SourceRouteType {get;set;}
StatusCode Property uint32 StatusCode {get;set;}
Timeout Property uint32 Timeout {get;set;}
TimeStampRecord Property uint32[] TimeStampRecord {get;set;}
TimeStampRecordAddress Property string[] TimeStampRecordAddress {get;set;}
TimeStampRecordAddressResolved Property string[] TimeStampRecordAddressResolved {get;set;}
TimestampRoute Property uint32 TimestampRoute {get;set;}
TimeToLive Property uint32 TimeToLive {get;set;}
TypeofService Property uint32 TypeofService {get;set;}
__CLASS Property string __CLASS {get;set;}
__DERIVATION Property string[] __DERIVATION {get;set;}
__DYNASTY Property string __DYNASTY {get;set;}
__GENUS Property int __GENUS {get;set;}
__NAMESPACE Property string __NAMESPACE {get;set;}
__PATH Property string __PATH {get;set;}
__PROPERTY_COUNT Property int __PROPERTY_COUNT {get;set;}
__RELPATH Property string __RELPATH {get;set;}
__SERVER Property string __SERVER {get;set;}
__SUPERCLASS Property string __SUPERCLASS {get;set;}
ConvertFromDateTime ScriptMethod System.Object ConvertFromDateTime();
ConvertToDateTime ScriptMethod System.Object ConvertToDateTime();
IPV4Address ScriptProperty System.Object IPV4Address {get=$iphost = [System.Net.Dns]::GetHostEntry($this.address)...
IPV6Address ScriptProperty System.Object IPV6Address {get=$iphost = [System.Net.Dns]::GetHostEntry($this.address)...
PS C:\Users\xxx> (Test-Connection -Count 1 -ComputerName $pc).IPV4Address|Get-Member
TypeName : System.Net.IPAddress
Name MemberType Definition
----
Equals Method bool Equals(System.Object comparand)
GetAddressBytes Method byte[] GetAddressBytes()
GetHashCode Method int GetHashCode()
GetType Method type GetType()
MapToIPv4 Method ipaddress MapToIPv4()
MapToIPv6 Method ipaddress MapToIPv6()
ToString Method string ToString()
Address Property long Address {get;set;}
AddressFamily Property System.Net.Sockets.AddressFamily AddressFamily {get;}
IsIPv4MappedToIPv6 Property bool IsIPv4MappedToIPv6 {get;}
IsIPv6LinkLocal Property bool IsIPv6LinkLocal {get;}
IsIPv6Multicast Property bool IsIPv6Multicast {get;}
IsIPv6SiteLocal Property bool IsIPv6SiteLocal {get;}
IsIPv6Teredo Property bool IsIPv6Teredo {get;}
ScopeId Property long ScopeId {get;set;}
IPAddressToString ScriptProperty System.Object IPAddressToString {get=$this.Tostring();}
[/code:1]<br><br>Message édité par: 6ratgus, à: 23/06/15 13:06
[code:1]((Test-Connection -Count 1 -ComputerName $pc).IPV4Address).IPAddressToString[/code:1]
et donc remplacé ça :
[code:1] $ippc = Test-Connection $pc -Count 1 | select IPV4Address
$ippc = ($ippc | Out-String -Stream | Select-String \"[0;9]\"«»)
$ippc = ($ippc | Out-String)
$ippc = $ippc.Trim()
[/code:1]
par ça :
[code:1]$ippc = ((Test-Connection -Count 1 -ComputerName $pc).IPV4Address).IPAddressToString
[/code:1]
powershell te renvoie des objets, à toi de les utilisés :
[code:1]
PS C:\Users\xxx> Test-Connection -Count 1 -ComputerName $pc|Get-Member
TypeName : System.Management.ManagementObject#root\cimv2\Win32_PingStatus
Name MemberType Definition
----
PSComputerName AliasProperty PSComputerName = __SERVER
Address Property string Address {get;set;}
BufferSize Property uint32 BufferSize {get;set;}
NoFragmentation Property bool NoFragmentation {get;set;}
PrimaryAddressResolutionStatus Property uint32 PrimaryAddressResolutionStatus {get;set;}
ProtocolAddress Property string ProtocolAddress {get;set;}
ProtocolAddressResolved Property string ProtocolAddressResolved {get;set;}
RecordRoute Property uint32 RecordRoute {get;set;}
ReplyInconsistency Property bool ReplyInconsistency {get;set;}
ReplySize Property uint32 ReplySize {get;set;}
ResolveAddressNames Property bool ResolveAddressNames {get;set;}
ResponseTime Property uint32 ResponseTime {get;set;}
ResponseTimeToLive Property uint32 ResponseTimeToLive {get;set;}
RouteRecord Property string[] RouteRecord {get;set;}
RouteRecordResolved Property string[] RouteRecordResolved {get;set;}
SourceRoute Property string SourceRoute {get;set;}
SourceRouteType Property uint32 SourceRouteType {get;set;}
StatusCode Property uint32 StatusCode {get;set;}
Timeout Property uint32 Timeout {get;set;}
TimeStampRecord Property uint32[] TimeStampRecord {get;set;}
TimeStampRecordAddress Property string[] TimeStampRecordAddress {get;set;}
TimeStampRecordAddressResolved Property string[] TimeStampRecordAddressResolved {get;set;}
TimestampRoute Property uint32 TimestampRoute {get;set;}
TimeToLive Property uint32 TimeToLive {get;set;}
TypeofService Property uint32 TypeofService {get;set;}
__CLASS Property string __CLASS {get;set;}
__DERIVATION Property string[] __DERIVATION {get;set;}
__DYNASTY Property string __DYNASTY {get;set;}
__GENUS Property int __GENUS {get;set;}
__NAMESPACE Property string __NAMESPACE {get;set;}
__PATH Property string __PATH {get;set;}
__PROPERTY_COUNT Property int __PROPERTY_COUNT {get;set;}
__RELPATH Property string __RELPATH {get;set;}
__SERVER Property string __SERVER {get;set;}
__SUPERCLASS Property string __SUPERCLASS {get;set;}
ConvertFromDateTime ScriptMethod System.Object ConvertFromDateTime();
ConvertToDateTime ScriptMethod System.Object ConvertToDateTime();
IPV4Address ScriptProperty System.Object IPV4Address {get=$iphost = [System.Net.Dns]::GetHostEntry($this.address)...
IPV6Address ScriptProperty System.Object IPV6Address {get=$iphost = [System.Net.Dns]::GetHostEntry($this.address)...
PS C:\Users\xxx> (Test-Connection -Count 1 -ComputerName $pc).IPV4Address|Get-Member
TypeName : System.Net.IPAddress
Name MemberType Definition
----
Equals Method bool Equals(System.Object comparand)
GetAddressBytes Method byte[] GetAddressBytes()
GetHashCode Method int GetHashCode()
GetType Method type GetType()
MapToIPv4 Method ipaddress MapToIPv4()
MapToIPv6 Method ipaddress MapToIPv6()
ToString Method string ToString()
Address Property long Address {get;set;}
AddressFamily Property System.Net.Sockets.AddressFamily AddressFamily {get;}
IsIPv4MappedToIPv6 Property bool IsIPv4MappedToIPv6 {get;}
IsIPv6LinkLocal Property bool IsIPv6LinkLocal {get;}
IsIPv6Multicast Property bool IsIPv6Multicast {get;}
IsIPv6SiteLocal Property bool IsIPv6SiteLocal {get;}
IsIPv6Teredo Property bool IsIPv6Teredo {get;}
ScopeId Property long ScopeId {get;set;}
IPAddressToString ScriptProperty System.Object IPAddressToString {get=$this.Tostring();}
[/code:1]<br><br>Message édité par: 6ratgus, à: 23/06/15 13:06
Connexion ou Créer un compte pour participer à la conversation.
- Tony Thoumassin
- Auteur du sujet
- Hors Ligne
- Nouveau membre
Réduire
Plus d'informations
- Messages : 14
- Remerciements reçus 0
il y a 8 ans 9 mois #20272
par Tony Thoumassin
Réponse de Tony Thoumassin sur le sujet Re:Problème de test-connection au niveau logiciel
Super Merci à tous les deux ça m'aide beaucoup .
Par contre est-ce que dans le test-Connection il y a une property ou une method pour trouver les remarques (celle qui sont dans net view avec le nom du serveur, ou alors comment isolé celles ci ?)
Parce que j'ai trouvé pour isolé le nom de la machine avec un switch -regex ... et donc j'ai essayé de bidouiller en partant de ça pour obtenir juste les remarques mais ça a pas marché ....
Par contre est-ce que dans le test-Connection il y a une property ou une method pour trouver les remarques (celle qui sont dans net view avec le nom du serveur, ou alors comment isolé celles ci ?)
Parce que j'ai trouvé pour isolé le nom de la machine avec un switch -regex ... et donc j'ai essayé de bidouiller en partant de ça pour obtenir juste les remarques mais ça a pas marché ....
Connexion ou Créer un compte pour participer à la conversation.
- Axel
- Hors Ligne
- Membre elite
Réduire
Plus d'informations
- Messages : 176
- Remerciements reçus 0
il y a 8 ans 9 mois #20273
par Axel
Réponse de Axel sur le sujet Re:Problème de test-connection au niveau logiciel
un peu de lecture ça ne fait pas de mal !
tape dans la console powershell
[code:1]
get-help Test-Connection -full
[/code:1]
tape dans la console powershell
[code:1]
get-help Test-Connection -full
[/code:1]
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.087 secondes
- Vous êtes ici :
- Accueil
- forum
- PowerShell
- Entraide pour les débutants
- Problème de test-connection au niveau logiciel