重大度レベル: 警告
デフォルト状態:常に有効
形容
このルールは、Unicodeやその他の非ASCII形式でエンコードされているが、バイト順序マーク(BOM)を含まないファイルを検出します。
Unicodeエンコーディングでファイルを保存する際は、アプリケーションがファイルのエンコーディングを正しく解釈できるようにBOMを含めることが重要です。 このルールは、Unicodeや類似の非ASCIIエンコーディングを使用する際に、PowerShellスクリプトやその他のテキストファイルが適切なBOMで保存されるようにするのに役立ちます。
エンコーディングパラメータの使用
ファイルに書き込みを行うPowerShellコマンドを使う場合は、 エンコーディング パラメータをBOMを生成する値に設定してください。 PowerShell 7以降では、これらのエンコーディング値がBOMを生成します:
bigendianunicodebigendianutf32oemunicodeutf32utf8BOM
テキストエディタでスクリプトファイルを作成する際は、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の使用に関する「抑制ルール」セクションをご覧ください。
こちらも参照ください
- about_Character_Encoding
- set-Content の
Visual Studio Code and PowerShell