まず、私は PowerShell を学んでいますが、多くのスクリプト言語でプログラミングを行ってきました。
リモートサーバー上のコマンドから出力を取得し、その出力に「実行中」という単語があるかどうかを確認するスクリプトを作成しています。現在、コマンドの出力を取得しており、変数$data
. 問題は、「clean_data」関数を介してそれを入れていることであり、関数に渡す変数の内容と同じではありません。
私が疑問に思っているのは、$data
変数の出力が画面に出力されたときに一体どのように1つのコンテンツを持つのかということですが、関数に渡されてすぐに出力されたときに新しいコンテンツが表示されるのですか? 私は何が欠けていますか?
返された行をループして、「実行中」の行がいくつあるかを確認し、そうでない場合は適切なエラーを出力したいだけです。
CODE (部分: 関数と関連コード)
function clean_data($input) {
Write-Output "Received data"$input
Write-Output "Cleaning data"
$output=@()
foreach ($line in $input) {
Write-Output "Looking at: "$line.ToString()
if ($line.ToString().Contains("running")) {
$output+=$line
}
}
Write-Output $output
return ,$output
}
$data = Get-Job -id $jobid.id | Receive-Job
Write-output "Data Type: "$data.GetType().Fullname
Write-Output "Output of $cmd"
Write-Output "============================================================"
Write-Output $data
Write-Output "============================================================"
clean_data $data
Write-Output $newdata
Remove-Job -Id $jobid.Id
出力
Data Type:
System.Object[]
Output of C:\opcragt.bat servername
============================================================
C:\Windows\system32>"D:\Program Files\HP\HP BTO Software\bin\win64\opcragt.cmd" servername
Node: servername
HPOM Managed Node status:
-------------------------
OV Performance Core coda (3500) is running
OV Communication Broker ovbbccb (10988) is running
OV Control ovcd (10400) is running
OV Config and Deploy ovconfd (5092) is running
Subagent EA:
Action Agent opcacta (9716) is running
Monitor Agent opcmona (9872) is running
Message Agent opcmsga (14712) is running
Message Interceptor opcmsgi (13512) is running
WMI Interceptor opcwbemi (6608) is running
**************************************************
Remote administration completed successfully on all nodes.
============================================================
Received data
Current
-------
Cleaning data