Windows コンピューターの構成を検証するための Pester テストを作成しています。必要なテストの 1 つは、PowerShell AMSI が機能しているかどうかを確認することです。
機能を検証するために使用できる AMSI テスト文字列があります。以下のテストを作成しました。
It '"Antimalware Scan Interface" is working' {
# AMSI test string 'AMSI Test Sample: 7e72c3ce-861b-4339-8740-0ac1484c1386'
# (in the following as an obfuscated string)
# must throw an error if executed (blocked by AMSI)
$TestString = "FHJ+YHoTZ1ZARxNgUl5DX1YJEwRWBAFQAFBWHgsFAlEeBwAACh4LBAcDHgNSUAIHCwdQAgALBRQ="
$Bytes = [Convert]::FromBase64String($TestString)
$String = -join ($bytes | ForEach-Object { [char]($_ -bxor 0x33)})
{ Invoke-Expression -Command $String } | Should Throw
}
テストを実行すると、AMSI が非常にうまく機能しているため、Context ブロック全体が実行されませんでした。つまり、テストが実行されず、成功が報告されませんでした。
受け取ります"Error occurred in Context block" In Filename.Tests.ps1:420 Character:36 + Context 'Configure PowerShell' { + ~ The Script contains malicious data and was blocked by anti malware.
(翻訳されたテキスト。原文は多少異なる場合があります。)
エラーの代わりに、コンテキストを実行して、エラーをスローしたことに対して「テスト成功」を返します。
この問題を処理したり、AMSI をテストしたりする方法はありますか?