about_Quoting_Rules

適用対象: Windows PowerShell 2.0, Windows PowerShell 3.0, Windows PowerShell 4.0

トピック

about_Quoting_Rules

概要

Windows PowerShell® で単一引用符および二重引用符を使用するための規則について説明します。

詳細説明

引用符は、リテラル文字列の指定に使用されます。文字列を単一引用符 (') または二重引用符 (") で囲むことができます。

引用符は、ヒア文字列の作成にも使用されます。ヒア文字列は、引用符が文字どおりに解釈される単一引用符または二重引用符付きの文字列です。ヒア文字列は、複数の行にまたがることができます。ヒア文字列内のすべての行は、引用符で囲まれていない場合でも、文字列として解釈されます。

リモート コンピューターに対するコマンドでは、引用符によって、リモート コンピューターで実行されるコマンドの一部が定義されます。リモート セッションでは、引用符によって、コマンド内の変数をローカル コンピューターまたはリモート コンピューターで最初に解釈するかどうかも決定されます。

単一引用符および二重引用符付きの文字列

文字列を二重引用符で囲むと (二重引用符付き文字列)、文字列がコマンドに渡されて処理される前に、ドル記号 ($) の後に続く変数名が変数の値に置き換えられます。

たとえば、次のように入力します。

        $i = 5
        "The value of $i is $i."

このコマンドの出力は次のとおりです。

        The value of 5 is 5.

また、二重引用符付きの文字列では、式が評価されて、その結果が文字列に挿入されます。たとえば、次のように入力します。

        "The value of $(2+3) is 5."

このコマンドの出力は次のとおりです。

        The value of 5 is 5.

文字列を単一引用符で囲むと (単一引用符付き文字列)、文字列は入力時のままコマンドに渡されます。置換は実行されません。たとえば、次のように入力します。

        $i = 5
        'The value of $i is $i.'

このコマンドの出力は次のとおりです。

        The value $i is $i.

同様に、単一引用符付き文字列内の式は評価されません。これらは、文字どおりに解釈されます。たとえば、次のように入力します。

        'The value of $(2+3) is 5.'

このコマンドの出力は次のとおりです。

        The value of $(2+3) is 5.

二重引用符付き文字列内の変数値が置き換えられないようにするには、Windows PowerShell のエスケープ文字であるアクサングラーブ文字 (') (ASCII 96) を使用します。

次の例では、最初の $i 変数の前にあるアクサングラーブ文字により、Windows PowerShell は変数名を変数の値に置き換えることができません。たとえば、次のように入力します。

        $i = 5
        "The value of `$i is $i."

このコマンドの出力は次のとおりです。

        The value $i is 5.

二重引用符が文字列に表示されるようにするには、文字列全体を単一引用符で囲みます。たとえば、次のように入力します。

        'As they say, "live and learn."'

このコマンドの出力は次のとおりです。

        As they say, "live and learn."

二重引用符付き文字列内の単一引用符付き文字列を囲むこともできます。たとえば、次のように入力します。

        "As they say, 'live and learn.'"

このコマンドの出力は次のとおりです。

        As they say, 'live and learn.'

あるいは、二重引用符付き語句を囲む引用符を二重にします。たとえば、次のように入力します。

        "As they say, ""live and learn."""

このコマンドの出力は次のとおりです。

        As they say, "live and learn."

単一引用符付き文字列に単一引用符を含めるには、2 つ目の連続する単一引用符を使用します。たとえば、次のように入力します。

        'don''t'

このコマンドの出力は次のとおりです。

        don't

Windows PowerShell で強制的に二重引用符を文字どおりに解釈するには、アクサングラーブ文字を使用します。これにより、Windows PowerShell は引用符を文字列の区切り記号として解釈しなくなります。たとえば、次のように入力します。

        "Use a quotation mark (`") to begin a string."

単一引用符付き文字列の内容が文字どおりに解釈されるため、アクサングラーブ文字を使用して、単一引用符付き文字列内の文字が強制的に文字どおりに解釈されるようにすることはできません。

たとえば、Windows PowerShell がエスケープ文字を認識しないため、次のコマンドではエラーが発生します。代わりに、2 つ目の引用符は文字列の末尾として解釈されます。

        PS C:\> 'Use a quotation mark (`') to begin a string.'
        Unexpected token ')' in expression or statement.
        At line:1 char:27
        + 'Use a quotation mark (`') <<<<  to begin a string.'

ヒア文字列

ヒア文字列の引用符規則は若干異なります。

ヒア文字列は、引用符が文字どおりに解釈される単一引用符または二重引用符付きの文字列です。ヒア文字列は、複数の行にまたがることができます。ヒア文字列内のすべての行は、引用符で囲まれていない場合でも、文字列として解釈されます。

通常の文字列と同じく、二重引用符付きのヒア文字列でも変数が値に置き換えられます。単一引用符付きのヒア文字列では、変数は値に置き換えられません。

ヒア文字列は、どのテキストにも使用できますが、次の種類のテキストには特に便利です。

  • -- リテラルの引用符が含まれるテキスト

  • -- HTML や XML ドキュメント内のテキストなど、複数行のテキスト

  • -- スクリプトまたは関数のヘルプ テキスト

ヒア文字列は、次のいずれかの形式にすることができます。<Enter> は、Enter キーを押すと追加される改行または改行隠し文字を表します。

     Double-quotes:
        @"<Enter>
        <string> [string] ...<Enter>
        "@

    Single-quotes:
        @'<Enter>
        <string> [string] ...<Enter>
        '@

いずれの形式でも、右二重引用符が行の最初の文字である必要があります。

ヒア文字列には、次の 2 つの隠し文字間のすべてのテキストが含まれています。ヒア文字列では、すべての引用符が文字どおりに解釈されます。たとえば、次のように入力します。

        @"
        For help, type "get-help"
        "@

このコマンドの出力は次のとおりです。

        For help, type "get-help"

ヒア文字列を使用すると、コマンド内での文字列の使用を簡略化できます。たとえば、次のように入力します。

        @"
        Use a quotation mark (') to begin a string.
        "@

このコマンドの出力は次のとおりです。

        Use a quotation mark (') to begin a string.

単一引用符付きのヒア文字列では、変数が文字どおりに解釈され、正確に再現されます。たとえば、次のように入力します。

        @'
        The $profile variable contains the path
        of your Windows PowerShell profile.
        '@

このコマンドの出力は次のとおりです。

        The $profile variable contains the path
        of your Windows PowerShell profile.

二重引用符付きのヒア文字列では、変数が値に置き換えられます。たとえば、次のように入力します。

        @" 
        Even if you have not created a profile,
        the path of the profile file is:
        $profile.
        "@

このコマンドの出力は次のとおりです。

        Even if you have not created a profile,
        the path of the profile file is:
        C:\Users\User01\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1.

ヒア文字列は通常、変数に複数の行を代入するために使用されます。たとえば、次のヒア文字列は $page 変数に XML のページを代入します。

        $page = [XML] @"
        <command:command xmlns:maml="https://schemas.microsoft.com/maml/2004/10"
        xmlns:command="https://schemas.microsoft.com/maml/dev/command/2004/10" 
        xmlns:dev="https://schemas.microsoft.com/maml/dev/2004/10">
        <command:details>
                <command:name>
                       Format-Table
                </command:name>
                <maml:description>
                    <maml:para>Formats the output as a table.</maml:para>
                </maml:description>
                <command:verb>format</command:verb>
                <command:noun>table</command:noun>
                <dev:version></dev:version>
        </command:details>
        ...
        </command:command>
        "@

ヒア文字列は、ヒア文字列をハッシュ テーブルに変換する ConvertFrom-StringData コマンドレットへの入力に適した便利な形式でもあります。詳細については、「ConvertFrom-StringData」を参照してください。

キーワード

about_Here-Strings

about_Quotes

about_Quotation_Marks

関連項目

about_Escape_Characters

ConvertFrom-StringData