PowerShell を学習して、この結果セットから最初の値を解析する方法を見つけようとしています:
IPAddresses
-----------
{10.60.50.40, fe80::5ddf:a8f4:e29c:b66}
通常は調べるだけですが、{x, x} がPowershell
現地での標準的なデータ型であるかどうかはわかりません。
大まかな文字列解析を行う必要がありますか、それとも次のような最初の文字列を抽出するための標準コマンドがありますか。
... | Select-Object IPAddresses | Select-String [0]
(選択文字列の部分は私が作ったものです。わかりません。)
答え1
これまでのところ、次のものがあります:
... Select-Object IPAddresses | ForEach {$_.IPAddresses}[0]
最初のものを返します。
答え2
次のように試してください:
$myResultSet | foreach { $_.IPAddresses[0] }
答え3
試す
$myResultSet | Select-Object -First 1 IPAddress
結果セットは、何らかのタイプのコレクションです。コマンドレットは、そのコレクションの最初の項目を取得し、表示されるプロパティSelect-Object
のみにフィルター処理します。IPAddress
私のマシンでは、上記のコマンドの出力は次のようになります。返されるアドレスが異なるため、あなたのマシンでは異なる可能性があります。
IPAddress
---------
fe80::5581:4fbc:fc22:ec79%13
PowerShell はデフォルトで出力を通過させてFormat-Table
見やすい表示にするため、テーブルが表示されます。
IP アドレス自体だけにアクセスするには、式を少し変更します。
$myResultSet.IPAddress|Select-Object -First 1
または、ドット表記とコレクションへのインデックスを使用すると、Select-Object
次のように完全に使用することを避けることができます。
$myResultSet[0].IPAddress
上記は、コレクションIPAddress
の最初の項目のプロパティを直接参照しており$myResultSet
、インデックスは0であるため、$myResultSet[0]
どちらの場合も、次のように IP アドレスそのものが返されます。
fe80::5581:4fbc:fc22:ec79%13
答え4
まず、タイプが何であるかを推測する必要はありませんIPAddresses
。次のように簡単に取得できます。
$myResultSet[0].IPAddresses.GetType()
おそらくそれは何らかのコレクション (配列)Select-Object
、パラメータとともに使用できますExpandProperty
:
$myResultSet | Select-Object -ExpandProperty 'IPAddresses' | Select-Object -First 1
または、プロパティ参照解除演算子および\またはインデックスとしてクリップルズマーフ提案された