8

一部のスクリプトでは、計算されたプロパティで構成される出力が必要です。

たとえば、ip.txt の IP アドレスのリストについて、それらが ping に応答するかどうかを知りたいとします。だから私は次のコマンドを試します:

Get-Content .\ip.txt | Select-Object $_,@{Name="ping?";Expression={Test-Connection $_ -Quiet -Count 1}}

しかし、スクリプトブロック式で何をしても、エラーが発生します。

エラー (フランス語で申し訳ありません):

Select-Object : Paramètre Null. Le type attendu doit être l'un des suivants : {System.String, System.Management.Automation.ScriptBlock}. Au niveau de ligne : 1 Caractère : 37 + Get-Content .\ip.txt | Select-Object <<<< $_,@{Name="ping?";Expression={Test-Connection $_ -Quiet -Count 1}} + CategoryInfo : InvalidArgument: (:) [Select-Object], NotSupportedException + FullyQualifiedErrorId : DictionaryKeyUnknownType,Microsoft.PowerShell.Commands.SelectObjectCommand

以前、いくつかのスクリプトで「計算されたプロパティ」を使用しましたが、ディレクトリ オブジェクトを使用していました。文字列で機能しないのはなぜですか?

4

1 に答える 1

16

代わりにこれを試してください。値ごとに計算されたプロパティを作成する必要があります。

Get-Content .\ip.txt | Select-Object  @{n="Server IP";e={$_}},@{n="ping?";e={[bool](Test-Connection $_ -Quiet -Count 1)}}

コードの問題は$_、計算されたプロパティではありません。 渡す配列がプロパティとして評価されないSelect-object場合は、プロパティの配列を受け入れます。$_( select-object -prop select-object $_$null のように)パイプされたアイテムが出力されます。

于 2013-06-04T14:50:37.537 に答える