1

Azure Powershell では、コマンド "az vm run-command invoke" を使用してスクリプトを仮想マシンに実行します。問題は、何らかの理由でそれが機能しない場合で、エラー メッセージにすべてのパラメーターの値がクリアで出力されます。これらのパラメーターは機密データであり、セキュリティ上の理由からエラー メッセージに出力する必要はありません。

これは私が実行しようとしているものです:

az vm run-command invoke -g $ResourceGroupName -n $VMname[-1] --command-id RunPowerShellScript --scripts @$pathScript --parameters "param1=$($Data1)" `
    "param2=$($Data2)" 

私の場合、Data1 は機密である可能性があり、その値をコードに出力することはありませんが、エラー メッセージでは値が明確に表示され、許可する必要はありません。

@$pathScript で定義され、マシンで実行されるスクリプトは、適切なパラメーターを追加するとうまく機能することに注意してください。

コードをtry catchブロックに入れてみましたが、これでもエラーメッセージがスローされ、catch部分に追加されたメッセージが出力されません

try{
    az vm run-command invoke -g $ResourceGroupName -n $VMname[-1] --command-id RunPowerShellScript --scripts @$pathScript --parameters "param1=$($Data1)" `
    "param2=$($Data2)" 
}catch{
    Write-Error "Error : Please check if your are passing the good arguments - Check the code if you need and debug it"
}

私は何が欠けていますか?.

4

1 に答える 1

0

これは外部アプリケーションであるため、try/catch を使用してエラーをキャッチすることはできません。代わりに、エラー ストリームを $null ( 2>$null) にリダイレクトして表示されないようにし、$LASTEXITCODE. 以下では、$LASTEXITCODE が 0 に等しくないかどうかを大まかに確認してエラーを生成しますが、取得している正確な終了コードを確認して、エラーのみを書き込むこともできます。

az vm run-command invoke -g $ResourceGroupName -n $VMname[-1] --command-id RunPowerShellScript --scripts @$pathScript --parameters "param1=$($Data1)" `
    "param2=$($Data2)" 2>$null
if ($LASTEXITCODE) {
    Write-Error 'Error : Please check if your are passing the good arguments - Check the code if you need and debug it'
}
于 2021-07-06T09:16:59.153 に答える