2011-07-14 7 views
1

私はPHPやJavascriptなどに精通していますが、私はPowershellを初めて使っています。私はアクティブなディレクトリ内のすべてのコンピュータからIPアドレスとMacアドレスを取得しようとしています。私はすべてのコンピュータ名がforeachループを使ってそれらをリストするオブジェクトを取得するスクリプトを見つけました。そのループの中で、私は以下を実行しようとしています:Powershellのオブジェクトのプロパティを文字列にするには

$colItems = GWMI -cl "Win32_NetworkAdapterConfiguration" -name "root\CimV2" ` 
comp $objComputer.name -filter "IpEnabled = TRUE" 

明らかに、これはパイプラインからデータを取ることができないため、機能しません。 Get-WmiObject内で使用するために、nameプロパティを取得して文字列変数に変換することはできませんか?私は値としてその$ objComputer.nameで文字列変数を宣言しようとしたし、$($ objComputer.name)を試しましたが、どちらも私のためにしませんでした。どんな助けでも大歓迎です。私はあなたがCOMPの前にハイフンが必要だと思う

+0

@Joeyはあなたがこれを削除した理由をちょっと疑問に思っています:ありがとう、良いものがあります。 ? – Matt

+0

マット:[巨大なメタをご覧ください](http://meta.stackexchange.com/questions/2950/should-hi-thanks-and-taglines-be-removed-from-posts)。 – Joey

答えて

1

...コピー&ペーストのエラーの可能性があり

$colItems = GWMI -cl "Win32_NetworkAdapterConfiguration" -name "root\CimV2" -comp $objComputer.name -filter "IpEnabled = TRUE" 

...

これは、(ドットを使用して)しかし私の作品:

$colItems =GWMI -cl "Win32_NetworkAdapterConfiguration" -name "root\CimV2" -comp . -filter "IpEnabled = TRUE" 

あなたはこの

$objComputer = @{ "name" = "." } 
を行うことができても$のobjComputerを使用して10

マット

+0

うわー、それはコピー&ペーストエラーでした。私がGWMIの呼び出しに打ち間違いがあったと私はそれを認識するのに十分な知りませんでした。ご協力いただきありがとうございます。 – Dan

0

はあいにくのGet-WmiObjectコマンドは、パイプライン入力を受け付けません。 $ objComputer.nameを渡すことは完全に有効です($ objComputerが名前メンバーを持つオブジェクトである限り)、名前の値を変数に代入して変数をComputerNameプロパティに渡すことができます。

foreach($objComputer $computers) 
{ 
    $name = $objComputer.name 
    $colItems = GWMI -cl Win32_NetworkAdapterConfiguration -comp $name -filter "IpEnabled = TRUE" 
    $colItems 
    ... 
}