Question Problème de test-connection au niveau logiciel

Plus d'informations
il y a 5 ans 10 mois #20257 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)

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

Plus d'informations
il y a 5 ans 10 mois #20266 par Tony Thoumassin
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 ?

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

Plus d'informations
il y a 5 ans 10 mois #20268 par Axel
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

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

Plus d'informations
il y a 5 ans 10 mois #20269 par Philippe
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 \&quot;[0;9]\&quot;«»)

$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&gt; 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&gt; (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.

Plus d'informations
il y a 5 ans 10 mois #20272 par Tony Thoumassin
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é ....

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

Plus d'informations
il y a 5 ans 10 mois #20273 par Axel
un peu de lecture ça ne fait pas de mal ! :P

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