UseBOMForUnicodeEncodedFile

重大度レベル: 警告

デフォルト状態:常に有効

形容

このルールは、Unicodeやその他の非ASCII形式でエンコードされているが、バイト順序マーク(BOM)を含まないファイルを検出します。

Unicodeエンコーディングでファイルを保存する際は、アプリケーションがファイルのエンコーディングを正しく解釈できるようにBOMを含めることが重要です。 このルールは、Unicodeや類似の非ASCIIエンコーディングを使用する際に、PowerShellスクリプトやその他のテキストファイルが適切なBOMで保存されるようにするのに役立ちます。

エンコーディングパラメータの使用

ファイルに書き込みを行うPowerShellコマンドを使う場合は、 エンコーディング パラメータをBOMを生成する値に設定してください。 PowerShell 7以降では、これらのエンコーディング値がBOMを生成します:

  • bigendianunicode
  • bigendianutf32
  • oem
  • unicode
  • utf32
  • utf8BOM

テキストエディタでスクリプトファイルを作成する際は、BOMでファイルを保存するようにエディターを設定してください。 BOMでファイルを保存する方法については、編集者のドキュメントを参照してください。

例

非準拠

# Writes non-ASCII text without a BOM.
Set-Content -Path .\script.ps1 -Value "Write-Output 'café'" -Encoding utf8NoBOM

対応

# Writes non-ASCII text with a BOM.
Set-Content -Path .\script.ps1 -Value "Write-Output 'café'" -Encoding utf8BOM

ルールの設定

このルールは常に有効で、設定はできません。 このルールを避けるために、以下のいずれかの方法を用いてください。

  • 欲しいルールだけを含めるか、不要なルールを除外するカスタムルール設定ファイルを作成しましょう。
  • 特定のコードブロックに対してルール抑制を抑制するために、適切なルール抑制属性をコードに追加してください。 詳細については、PSScriptAnalyzerの使用に関する「抑制ルール」セクションをご覧ください。

こちらも参照ください