26

次のPowershellスクリプトを実行しようとしています。

import-module ActiveDirectory

$computers = Get-ADComputer -filter * -SearchBase "OU=myOU,DC=vw,DC=local" | select-object name

Invoke-Command -ComputerName $computers -ScriptBlock {gpupdate /target:Computer}

問題は予想通りで$computersはありませんstring[]-ComputerNameこれは実際には、ADComputernameと呼ばれる1つのパラメーターを持つの配列です。

# Get-ADComputer -filter * -SearchBase "OU=myOU,DC=vw,DC=local" | select-object name | Format-Custom

class ADComputer
{
  name = PC1
}

class ADComputer
{
  name = PC2
}

class ADComputer
{
  name = PC3
}

名前の文字列の配列を取得する正しい方法は何ですか?私がC#にいたら、

string[] computerNames = computers.Select(computer => computer.name).ToArray();

しかし、Powershellで正しく行う方法を学びたいと思います。

4

1 に答える 1

33

使用できます

Select-Object -ExpandProperty Name

または(おそらく最も近い同等物)

ForEach-Object { $_.Name }

結果を強制的に配列にするには(たとえば、そのCountプロパティにアクセスする場合)、式を。で囲む必要があることに注意してください@()。それ以外の場合、結果は配列または単一のオブジェクトになる可能性があります。

于 2012-06-06T20:33:04.400 に答える