Powershellで複数のテーブルを結合して作成し、SQLのUNION
クエリと同様に、使いやすい形式でレポートとして出力しようとしています。Powershellで複数のテーブルの結合を作成する
I次のコードを持っている:
$ft = @{auto=$true; [email protected]("MachineName", "Status", "Name", "DisplayName")}
$hosts = @("svr001", "svr002")
$report = @()
ForEach ($h in $hosts) {
$results = Get-Service -CN $h -Name MyService
$report += $results | Format-Table @ft
# Other things occur here, which is why I'm creating $report for output later.
}
Write-Output $report
次のようにこのコードの出力は次のとおりです。
MachineName Status Name DisplayName
----------- ------ ---- -----------
svr001 Running MyService MyServiceDisplayName
MachineName Status Name DisplayName
----------- ------ ---- -----------
svr002 Running MyService MyServiceDisplayName
あなたは、単にPowerShellで組合を行うために配列を追加しているので(すなわち、 $union = @(0, 1, 2) + @(3, 4, 5)
)私の最初の考えは、私が を得なければならないということでした。
MachineName Status Name DisplayName
----------- ------ ---- -----------
svr001 Running MyService MyServiceDisplayName
svr002 Running MyService MyServiceDisplayName
振り返ってみると、ではなくが出力されますが、 2番目の出力例の2つの表の和集合を1つの表に2番目のように作成する方法が不明です。正しい方向に私を送ってくれるドキュメントや例の中に何かを見つけることができませんでした。
移動 '| Format-Table ....... 'を' write-output $ report'の最後の行に追加します。 'format- *'コマンドレットの出力を保存しないでください。 –
レコードの場合、複数のコンピュータ名をGet-Serviceに渡すことができます。ForEachループはコードのその部分には必要ありません。 –
'Format- *'コマンドレットからの出力を保存しないという点が分かりましたが、それは次の出力を生成します: 'System.ServiceProcess.ServiceController System.ServiceProcess.ServiceController System.ServiceProcess.ServiceControllerSystem.ServiceProcess.ServiceController System.ServiceProcess .ServiceController System.ServiceProcess.ServiceController'。 –