ja-JP/about_Quoting_Rules.help.txt

TOPIC
    about_Quoting_Rules

簡単な説明
    PowerShell における引用符 (単一引用符・二重引用符) の使い方と、
    文字列内での変数展開やエスケープのルールを説明します。

詳細な説明
    PowerShell では、文字列を単一引用符 (') または二重引用符 (") で
    囲んで表します。どちらの引用符を使うかによって、変数や式の展開
    動作が変わります。

二重引用符で囲んだ文字列 (展開可能文字列)

    二重引用符で囲んだ文字列では、変数の置換と式の評価が行われます。
    先頭に $ が付いた変数は、その値に置き換えられます。

        $name = "太郎"
        "こんにちは $name さん"
        # こんにちは 太郎 さん

    配列の要素やオブジェクトのメンバーを展開するには、部分式構文 $() を
    使う必要があります。$ と変数名だけでは展開されません。

        $a = 1, 2, 3
        "最初の要素は $($a[0]) です"
        "プロセス名: $($p.Name)"

単一引用符で囲んだ文字列 (リテラル文字列)

    単一引用符で囲んだ文字列では、変数の置換や式の評価は一切行われず、
    入力したとおりの内容がそのまま使われます。

        $name = "太郎"
        'こんにちは $name さん'
        # こんにちは $name さん

変数展開の抑制

    二重引用符の中で変数を展開させたくない場合は、バッククォート (`) で
    エスケープします。`$variable は、文字どおり $variable と表示されます。

        "リテラル: `$name"
        # リテラル: $name

    変数名の直後にコロンなどが続く場合は、波かっこ {} で変数名の範囲を
    明示します。

        "${HOME}: ホームディレクトリ"

文字列に引用符を含める

    - 単一引用符の文字列に二重引用符を含める: 'He said "hello"'
    - 二重引用符の文字列に単一引用符を含める: "It's working"
    - 二重引用符の中で二重引用符を表す (重ねる): "Say ""hello"""
    - 単一引用符の中で単一引用符を表す (重ねる): 'don''t' → don't

    バッククォートで二重引用符をエスケープすることもできます。

        "Say `"hello`""
        # Say "hello"

    全角の引用符 (いわゆるスマートクォート) も、通常の引用符と同様に
    エスケープが必要です。

ヒアストリング (here-string)

    複数行にわたる文字列は、ヒアストリングで表します。二重引用符版は
    @"..."@、単一引用符版は @'...'@ の構文を使います。開始記号の直後と、
    終了記号の直前は、それぞれ改行する必要があります。終了記号は行頭に
    置きます。

        $text = @"
    複数行の
    "引用符" もそのまま書けます。
    変数 $name も展開されます。
    "@

        $literal = @'
    ここでは $name は展開されず、
    'そのまま' 出力されます。
    '@

    二重引用符のヒアストリングでは変数が展開され、単一引用符の
    ヒアストリングではリテラルとして扱われます。ヒアストリング内の
    引用符は、エスケープなしでそのまま記述できます。

カルチャに関する注意

    オブジェクトの ToString() を直接呼び出すと、システムのカルチャ設定が
    反映されます。一方、PowerShell の展開可能文字列の中での変換は、
    インバリアントカルチャ (不変カルチャ) で書式設定されます。これにより、
    ロケールに依存しない一貫した出力が得られます。

関連項目
    about_Variables
    about_Special_Characters
    about_Escape_Characters
    about_Automatic_Variables

----
原文: PowerShell-Docs (CC BY 4.0) の翻訳 / PSHelpJaJP