[解決済み] 呼び出しが1つのオブジェクトしか返さない場合、Powershellが配列を返すように強制するにはどうすればよいですか?
2022-04-26 01:56:33
質問
Powershellを使ってWebサーバーにIISバインディングを設定しているのですが、以下のコードに問題があります。
$serverIps = gwmi Win32_NetworkAdapterConfiguration
| Where { $_.IPAddress }
| Select -Expand IPAddress
| Where { $_ -like '*.*.*.*' }
| Sort
if ($serverIps.length -le 1) {
Write-Host "You need at least 2 IP addresses for this to work!"
exit
}
$primaryIp = $serverIps[0]
$secondaryIp = $serverIps[1]
Powershellは配列を返すので、配列の長さをクエリして、1番目と2番目のアドレスをうまく取り出すことができます。
問題は、IPが1つしかない場合、Powershellは1要素の配列を返さず、IPアドレス(192.168.0.100"のような文字列として)を返しますが、その文字列に
.length
プロパティは1より大きいので、テストはパスし、コレクション内の最初の2つのIPアドレスではなく、文字列の最初の2文字を取得することになりました。
Powershellが1要素のコレクションを返すように強制するか、あるいは返された"thing"がコレクションではなくオブジェクトであるかどうかを判断するにはどうすればよいですか?
どのように解決するのですか?
2つの方法のいずれかで、変数を配列として定義してください。
パイプでつながれたコマンドを括弧でくくり、その中に
@
を指定します。
$serverIps = @(gwmi Win32_NetworkAdapterConfiguration
| Where { $_.IPAddress }
| Select -Expand IPAddress
| Where { $_ -like '*.*.*.*' }
| Sort)
変数のデータ型を配列で指定します。
[array]$serverIps = gwmi Win32_NetworkAdapterConfiguration
| Where { $_.IPAddress }
| Select -Expand IPAddress
| Where { $_ -like '*.*.*.*' }
| Sort
または、変数のデータ型を確認する・・・。
IF ($ServerIps -isnot [array])
{ <error message> }
ELSE
{ <proceed> }
関連
-
PowerShellのジョブ関連コマンドとタスクの並列実行の解説
-
nugetパッケージのファイル消失問題を解決するためのpowershellスクリプトを追加しました。
-
PowerShell 4.0によるサーバセットアップの自動化
-
PowerShell で .NET Framework を使用して、グローバルアセンブリキャッシュにアセンブリを追加する。
-
PowerShell は、現在のスクリプトランタイムによって消費されるメモリの動的フェッチを実装しています。
-
PowerShell正規表現(Regex)の右から左へのマッチング方式のコード例
-
PowershellでWebサイトのレスポンスを確認し、実行時間を計算する例
-
PowerShellでF1ヘルプコマンドのアクセスをオンラインドキュメントに変更する方法
-
[解決済み] PowerShellスクリプトに引数を渡すにはどうしたらいいですか?
-
[解決済み] PowerShellで文字列がNULLまたは空であるかどうかを確認するにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
PowerShellタイムロギングスクリプト
-
ADユーザーのパスワード属性を一括で変更するPowerShellコード
-
PowerShell文字列オブジェクトのメソッド概要
-
Powershellスクリプトの4種類の実行権限についてご紹介します。
-
PowerShellでプログラム的にIEのキャッシュを空にする
-
Powershellですべてのディスクレターを取得する方法
-
コンピュータのシリアル番号を取得するためのPowershellスクリプト
-
コマンドライン履歴のコマンドをコピーするPowerShellメソッド
-
PowerShellでNICの状態と対応する電源設定を確認する
-
PowershellでWebサイトのレスポンスを確認し、実行時間を計算する例