Bagikan melalui


about_Quoting_Rules

Deskripsi singkat

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

Deskripsi panjang

Saat mengurai, PowerShell pertama-tama terlihat menginterpretasikan input sebagai ekspresi. Tetapi ketika pemanggilan perintah ditemui, penguraian berlanjut dalam mode argumen. Argumen non-numerik tanpa tanda kutip diperlakukan sebagai string. Jika Anda memiliki argumen yang berisi spasi, seperti jalur, maka Anda harus mengapit nilai argumen tersebut dalam tanda kutip. Untuk informasi selengkapnya tentang penguraian argumen, lihat bagian Mode argumen dari about_Parsing.

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 string di sini 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.

Catatan

PowerShell memperlakukan tanda kutip pintar, juga disebut tanda kutip tipografis atau kutipan keriting, sebagai tanda kutip normal untuk string. Jangan gunakan tanda kutip pintar untuk mengapit string. Saat menulis string yang berisi tanda kutip cerdas, ikuti panduan di bagian Menyertakan karakter kutipan di string dokumen ini. Untuk informasi selengkapnya tentang tanda kutip cerdas, lihat bagian Kutipan Cerdas di artikel Wikipedia Tanda kutip dalam bahasa Inggris.

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 dasar 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.4.5

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 dan $ penentu : cakupan, biasanya menyebabkan interpretasi gagal. Misalnya, "$HOME: where the heart is." melemparkan kesalahan, tetapi "${HOME}: where the heart is." berfungsi seperti yang dimaksudkan.

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 saat Anda mengetiknya. 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, gandakan 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 tanda kutip tunggal berturut-turut kedua. 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.

Karena PowerShell menginterpretasikan tanda kutip cerdas, seperti , , , dan , sebagai tanda kutip normal, tanda kutip cerdas juga perlu diloloskan. Contohnya:

"Double ““smart quotation marks`” must be escaped in a double-quoted string."
'Single ‘‘smart quotation marks’’ must be escaped in a single-quoted string.'
Double “smart quotation marks” must be escaped in a double-quoted string.
Single ‘smart quotation marks’ must be escaped in a single-quoted 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 kutip dalam string di sini ditafsirkan secara harfiah.

String di sini:

  • rentang beberapa baris
  • dimulai dengan tanda pembuka diikuti oleh baris baru
  • diakhir dengan baris baru diikuti dengan tanda penutup
  • mencakup setiap baris antara tanda pembuka dan penutupan sebagai bagian dari satu string

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, like ' or ", to begin a string.
"@

Output dari perintah ini adalah:

Use a quotation mark, like ' or ", 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.

String berikut biasanya digunakan untuk menetapkan beberapa baris ke variabel. Misalnya, string berikut 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>
"@

String di sini 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 yang dikutip ganda atau tunggal untuk menjangkau beberapa baris tanpa menggunakan @ sintaksis string di sini. 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 ke string dengan menempatkan spasi tunggal 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 belakang.

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

Pengaturan budaya memengaruhi interpretasi string

Metode ini ToString() menggunakan pengaturan budaya yang dikonfigurasi saat ini untuk mengonversi nilai menjadi string. Misalnya, budaya sesi PowerShell berikut diatur ke de-DE. ToString() Ketika metode mengonversi nilai $x menjadi string, metode menggunakan koma (,) untuk pemisah desimal. Selain itu, metode mengonversi ToString() tanggal menjadi string menggunakan format yang sesuai untuk pengaturan lokal Jerman.

PS> Get-Culture

LCID             Name             DisplayName
----             ----             -----------
1031             de-DE            German (Germany)

PS> $x = 1.2
PS> $x.ToString()
1,2

PS> (Get-Date 2024-03-19).ToString()
19.03.2024 00:00:00

Namun, PowerShell menggunakan budaya invarian saat menafsirkan ekspresi string yang dapat diperluas.

PS? "$x"
1.2

PS> "$(Get-Date 2024-03-19)"
03/19/2024 00:00:00

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