2017-02-13 15 views
-2

私のネットワーク上の複数のマシンの外部IPアドレスを取得するためにこのスクリプトを取得しようとしています。これまでのところ、スクリプトはループを反復しているようですが、ループ上のリモートマシンではなくローカルマシンでコマンドを実行しています。コンピュータリストから外部IPアドレスを取得するためのPowershellスクリプト

+0

不明です。リモートから実行するコマンドレットは決して "尋ねられませんでした。" '$ results'と' $ outfile'は決して使用されません。 'Select-Object'のカラム名として' $ computer'を入力しました。これは、値だけでなく、独自のプロパティを持つオブジェクトを生成します。 –

+0

*私のネットワーク上の複数のマシンの外部IPアドレス* - あなたそれがあなたのネットワークに単純に設定されていることを知っていれば、コンピュータのための明確な単一の外部IPアドレスはありません。複数のWAN接続、誰がログインしているか、時刻に応じて異なるポリシー、異なるプロトコルの異なるルーティング、異なる着信サービス(HTTPS、SSH)の複数のIPなど、複数の外部IPアドレスが存在する理由はたくさんあります。 。 – TessellatingHeckler

答えて

2

リモート実行を指定するには、コマンドレットまたはパラメータを使用する必要があります。 $computerそれ自体は単なる文字列値を持つ変数です。

一部のコマンドレットは-ComputerName $computerパラメータをサポートしていますが、Invoke-RestMethodなどの一部のコマンドレットでは、Invoke-Commandなどを使用して実行する必要があります。

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

ありがとう、それは多くの助けになります。これが生成するrunspaceid領域をどのように削除することができますか? –

+0

'$ results | Select-Object Name、ExternalIP' –

+0

これはあなたの質問が解決された場合に回答としてマークして、質問は閉じたものとしてマークすることを忘れないでください。 –

関連する問題