Linux 出身で、PowerShell スクリプトを使用して Veeam Backup ジョブの収集を自動化しようとしています。
PowerShell 配列がどのように機能するかを理解し始めたので、小さなテストを試してみました。
$users = 'mark','josh','stephen'
$city = 'seattle','boston','chicago'
for ($i = 0; $i -lt $users.Count; $i++) {
Write-Host $users[$i] 'live in' $city[$i]
}
出力:
マーク・ライブ・イン・シアトル ジョシュはボストンに住んでいます スティーブンはシカゴに住んでいます
しかし、文字列の代わりにコマンドを追加して 2 つの配列を変更すると、次のようになります。
$jobname = @(gwmi -Namespace "root/veeambs" -Class "job" | select typetostring, name | ft -HideTableHeaders | Out-String)
$isenabled = @(gwmi -Namespace "root/veeambs" -Class "job" | select typetostring, scheduleenabled | ft -HideTableHeaders | Out-String)
for ($i = 0; $i -lt $jobname.Count; $i++) {
echo $jobname[$i] ' --> ' $isenabled[$i]
}
出力は次のとおりです。
ジョブ1 ジョブ2 ジョブ3 ジョブ4 ジョブ5 ジョブ6 ジョブ7 ジョブ8 ジョブ9 ジョブ10 ジョブ11 ジョブ12 ジョブ13 ジョブ14 JOb15 ジョブ16 ジョブ17 ジョブ18 ジョブ19 ジョブ20 --> 間違い 真実 真実 間違い 真実 真実 間違い 真実 真実 真実 真実 真実 真実 真実 真実 真実 真実 真実 真実 真実
それ以外の:
ジョブ 1 --> 偽 Job2 --> True Job3 --> True Job4 --> 偽 等
コマンド全体を手動で実行すると、次のようになります。
PS> gwmi -ネームスペース "root/veeambs" -クラス "ジョブ" | typetostring、name、scheduleenabled を選択 typetostring name scheduleenabled ------------ ---- --------------- ジョブ 1 偽 ジョブ 2 真 Job3 真 Job4 偽 Job5 真 Job6 真 Job7 偽 Job8 真 Job9 真 Job10 真 Job11 真 Job12 真 Job13 真 Job14 真 Job15 真 Job16 真 Job17 真 Job18 真 Job19 真 Job20 真
私はおそらく何か間違ったことをしている!