2017-02-13 1 views
-2

Ich habe versucht, dieses Skript die externe IP-Adresse von mehreren Computern in meinem Netzwerk zu erhalten. Bis jetzt scheint das Skript die Schleife zu durchlaufen, aber den Befehl auf meiner lokalen Maschine statt auf der entfernten Maschine in der Schleife auszuführen.Powershell-Skript, um externe IP-Adresse aus einer Liste von Computern zu erhalten

+0

So unklar. Sie haben niemals versucht, irgendwelche Cmdlets per Fernzugriff auszuführen ... "$ results" und "$ outfile" werden niemals verwendet. Sie haben '$ computer' als Spaltenname für' Select-Object' eingegeben, wodurch Objekte mit eigenen Eigenschaften (nicht nur Werten) generiert würden. –

+0

* die externe IP-Adresse von mehreren Rechnern in meinem Netzwerk * ​​- außer Sie Sie können sicher sein, dass es einfach in Ihrem Netzwerk konfiguriert ist. Es gibt keine eindeutige externe IP-Adresse für einen Computer. Es gibt viele Gründe dafür, dass mehr als eine externe IP-Adresse vorhanden sein kann - mehrere WAN-Verbindungen, unterschiedliche Richtlinien, je nachdem, wer angemeldet ist oder welche Uhrzeit, unterschiedliches Routing für verschiedene Protokolle, mehrere IPs für verschiedene eingehende Dienste (HTTPS, SSH). – TessellatingHeckler

Antwort

2

Sie müssen ein Cmdlet oder einen Parameter verwenden, um die Remoteausführung anzugeben. $computer selbst ist nur eine Variable mit einem String-Wert.

Einige Cmdlets unterstützen einen -ComputerName $computer Parameter, während andere wie Invoke-RestMethod erfordern, dass Sie sie mit Invoke-Command oder etwas ähnliches ausführen.

Ex.

$computers = get-content "c:\scripts\scriptdev\Addresses.txt" 
$results = @() 

foreach ($computer in $computers) 
{ 
    $results += Invoke-Command -HideComputerName -ComputerName $computer -ScriptBlock { 
     New-Object -TypeName psobject -Property @{ 
      Name = Get-WMIObject Win32_ComputerSystem | Select-Object -ExpandProperty name 
      ExternalIP = Invoke-RestMethod http://ipinfo.io/json | Select -ExpandProperty ip 
     } 
    } 
} 

$results 
+0

Vielen Dank, das hilft sehr. Weißt du, wie ich den Runspace-Bereich entfernen kann? –

+0

'$ Ergebnisse | Select-Objekt Name, ExternalIP' –

+0

Denken Sie daran, als Antwort zu markieren, wenn dies Ihre Frage gelöst hat, so dass die Frage als geschlossen markiert wird. –

Verwandte Themen