about_Quoting_Rules

Deskripsi singkat

Menjelaskan aturan untuk menggunakan tanda kutip tunggal dan ganda di PowerShell.

Deskripsi panjang

Tanda kutip digunakan untuk menentukan string harfiah. Anda dapat mengapit string dalam tanda kutip tunggal (') atau tanda kutip ganda (").

Tanda kutip juga digunakan untuk membuat string di sini. String di sini adalah string yang dikutip tunggal atau dikutip ganda di mana tanda kutip ditafsirkan secara harfiah. String di sini dapat mencakup beberapa baris. Semua baris dalam here-string ditafsirkan sebagai string, meskipun tidak diapit dalam tanda kutip.

Dalam perintah ke komputer jarak jauh, tanda kutip menentukan bagian perintah yang dijalankan pada komputer jarak jauh. Dalam sesi jarak jauh, tanda kutip juga menentukan apakah variabel dalam perintah ditafsirkan terlebih dahulu di komputer lokal atau di komputer jarak jauh.

String yang dikutip ganda

String yang diapit dalam tanda kutip ganda adalah string yang dapat diperluas . Nama variabel yang didahului oleh tanda dolar ($) diganti dengan nilai variabel sebelum string diteruskan ke perintah untuk diproses.

Contohnya:

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

Output dari perintah ini adalah:

The value of 5 is 5.

Selain itu, dalam string yang dikutip ganda, ekspresi dievaluasi, dan hasilnya disisipkan dalam string. Contohnya:

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

Output dari perintah ini adalah:

The value of 5 is 5.

Hanya referensi variabel sederhana yang dapat langsung disematkan dalam string yang dapat diperluas. Referensi variabel menggunakan pengindeksan array atau akses anggota harus diapit dalam subekspresi. Contohnya:

"PS version: $($PSVersionTable.PSVersion)"
PS version: 7.2.0

Untuk memisahkan nama variabel dari karakter berikutnya dalam string, sertakan dalam kurung kurawal ({}). Ini sangat penting jika nama variabel diikuti oleh titik dua (:). PowerShell mempertimbangkan segala sesuatu antara penentu $ cakupan dan : , biasanya menyebabkan interpretasi gagal. Misalnya, "$HOME: where the heart is." melemparkan kesalahan, tetapi "${HOME}: where the heart is." berfungsi seperti yang diinginkan.

Untuk mencegah penggantian nilai variabel dalam string yang dikutip ganda, gunakan karakter backtick (`), yang merupakan karakter escape PowerShell.

Dalam contoh berikut, karakter backtick yang mendahului variabel pertama $i mencegah PowerShell mengganti nama variabel dengan nilainya. Contohnya:

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

Output dari perintah ini adalah:

The value of $i is 5.

String yang dikutip tunggal

String yang diapit dalam tanda kutip tunggal adalah string verbatim . String diteruskan ke perintah persis seperti yang Anda ketikkan. Tidak ada penggantian yang dilakukan. Contohnya:

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

Output dari perintah ini adalah:

The value $i is $i.

Demikian pula, ekspresi dalam string yang dikutip tunggal tidak dievaluasi. Mereka ditafsirkan sebagai literal string. Contohnya:

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

Output dari perintah ini adalah:

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

Menyertakan karakter kutipan dalam string

Untuk membuat tanda kutip ganda muncul dalam string, sertakan seluruh string dalam tanda kutip tunggal. Contohnya:

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

Output dari perintah ini adalah:

As they say, "live and learn."

Anda juga dapat mengapit string yang dikutip tunggal dalam string yang dikutip ganda. Contohnya:

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

Output dari perintah ini adalah:

As they say, 'live and learn.'

Atau, dua kali lipat tanda kutip di sekitar frasa yang dikutip ganda. Contohnya:

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

Output dari perintah ini adalah:

As they say, "live and learn."

Untuk menyertakan tanda kutip tunggal dalam string yang dikutip tunggal, gunakan kutipan tunggal kedua berturut-turut. Contohnya:

'don''t'

Output dari perintah ini adalah:

don't

Untuk memaksa PowerShell menginterpretasikan tanda kutip ganda secara harfiah, gunakan karakter backtick. Ini mencegah PowerShell menginterpretasikan tanda kutip sebagai pemisah string. Contohnya:

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

Karena konten string yang dikutip tunggal ditafsirkan secara harfiah, karakter backtick diperlakukan sebagai karakter harfiah dan ditampilkan dalam output.

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

Berikut-string

Aturan kutipan untuk here-string sedikit berbeda.

String di sini adalah string yang dikutip tunggal atau dikutip ganda yang dikelilingi oleh tanda -tanda (@). Tanda kutip dalam string di sini ditafsirkan secara harfiah.

String di sini:

  • menjangkau beberapa baris
  • dimulai dengan tanda pembuka diikuti dengan baris baru
  • diakhir dengan baris baru diikuti dengan tanda penutup
  • mencakup setiap baris antara tanda buka dan tutup sebagai bagian dari string tunggal

Seperti string reguler, variabel digantikan oleh nilainya dalam string di sini yang dikutip ganda. Dalam string di sini yang dikutip tunggal, variabel tidak digantikan oleh nilainya.

Anda dapat menggunakan string di sini untuk teks apa pun, tetapi sangat berguna untuk jenis teks berikut:

  • Teks yang berisi tanda kutip harfiah
  • Beberapa baris teks, seperti teks dalam blok HTML atau XML
  • Teks Bantuan untuk skrip atau dokumen fungsi

String di sini dapat memiliki salah satu format berikut, di mana <Enter> mewakili karakter tersembunyi baris atau baris baru yang ditambahkan saat Anda menekan tombol ENTER .

Tanda kutip ganda:

@"<Enter>
<string> [string] ...<Enter>
"@

Tanda kutip tunggal:

@'<Enter>
<string> [string] ...<Enter>
'@

Catatan

Karakter baris baru akhir adalah bagian dari tanda penutup. Ini tidak ditambahkan ke string di sini.

String di sini berisi semua teks antara tanda pembuka dan penutup. Dalam string di sini, semua tanda kutip ditafsirkan secara harfiah. Contohnya:

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

Output dari perintah ini adalah:

For help, type "get-help"

Menggunakan here-string dapat menyederhanakan menggunakan string dalam perintah. Contohnya:

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

Output dari perintah ini adalah:

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

Dalam string di sini yang dikutip tunggal, variabel ditafsirkan secara harfiah dan direproduksi dengan tepat. Contohnya:

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

Output dari perintah ini adalah:

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

Dalam string di sini yang dikutip ganda, variabel digantikan oleh nilainya. Contohnya:

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

Output dari perintah ini adalah:

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

Here-string biasanya digunakan untuk menetapkan beberapa baris ke variabel. Misalnya, string berikut ini menetapkan halaman XML ke variabel $page.

$page = [XML] @"
<command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10"
xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10"
xmlns:dev="http://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>
"@

Here-string juga merupakan format yang nyaman untuk input ke ConvertFrom-StringData cmdlet, yang mengonversi di sini-string menjadi tabel hash. Untuk informasi selengkapnya, lihat ConvertFrom-StringData.

Catatan

PowerShell memungkinkan string dua kali atau dikutip tunggal untuk menjangkau beberapa baris tanpa menggunakan @ sintaks di sini-string. Namun, sintaksis full here-string adalah penggunaan yang disukai.

Interpretasi string yang dapat diperluas

String yang diperluas tidak selalu terlihat sama dengan output default yang Anda lihat di konsol.

Koleksi, termasuk array, dikonversi menjadi string dengan menempatkan satu spasi di antara representasi string elemen. Pemisah yang berbeda dapat ditentukan dengan mengatur variabel $OFSpreferensi . Untuk informasi selengkapnya, lihat $OFS variabel preferensi.

Instans dari jenis lain dikonversi menjadi string dengan memanggil ToString() metode yang mungkin tidak memberikan representasi yang bermakna. Contohnya:

"hashtable: $(@{ key = 'value' })"
hashtable: System.Collections.Hashtable

Untuk mendapatkan output yang sama seperti di konsol, gunakan subekspresi tempat Anda menyalurkan ke Out-String. Terapkan Trim() metode jika Anda ingin menghapus baris kosong di awal dan akhir.

"hashtable:`n$((@{ key = 'value' } | Out-String).Trim())"
hashtable:
Name                           Value
----                           -----
key                            value

Meneruskan string yang dikutip ke perintah eksternal

Beberapa perintah asli mengharapkan argumen yang berisi karakter kutipan. PowerShell menginterpretasikan string yang dikutip sebelum meneruskannya ke perintah eksternal. Interpretasi ini menghapus karakter kutipan luar.

Untuk informasi selengkapnya tentang perilaku ini, lihat artikel about_Parsing .

Lihat juga