Π Π°Π·Π½ΠΎΠ΅

Powershell экранированиС символов – ΠšΠ°Π²Ρ‹Ρ‡ΠΊΠΈ Π² PowerShell

01.03.2019

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅

ΠšΠ°Π²Ρ‹Ρ‡ΠΊΠΈ Π² PowerShell

Π‘Ρ‚Ρ€ΠΎΠΊΠΎΠ²Ρ‹Π΅ значСния Π² PowerShell Π²ΡΡ‚Ρ€Π΅Ρ‡Π°ΡŽΡ‚ΡΡ довольно часто. Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, ΠΎΠ½ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌ ΠΊΠ°ΠΊ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹. Иногда строки Π·Π°ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ΡΡ Π² Π΄Π²ΠΎΠΉΠ½Ρ‹Π΅ ΠΈΠ»ΠΈ ΠΎΠ΄ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ, Π° ΠΈΠ½ΠΎΠ³Π΄Π° обходятся Π±Π΅Π· Π½ΠΈΡ…. ΠΠ΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ поставлСнныС (ΠΈΠ»ΠΈ Π½Π΅ поставлСнныС) ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΏΡ€ΠΈΡ‡ΠΈΠ½ΠΎΠΉ мноТСства ошибок Π² ΠΊΠΎΠ΄Π΅, поэтому ΠΎΡ‡Π΅Π½ΡŒ Π²Π°ΠΆΠ½ΠΎ ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»Π° Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°ΠΌΠΈ: ΠΊΠΎΠ³Π΄Π° тСкст Π½ΡƒΠΆΠ½ΠΎ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Π² ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ, ΠΊΠΎΠ³Π΄Π° Π½Π΅Ρ‚ ΠΈ ΠΊΠΎΠ³Π΄Π° ΠΊΠ°ΠΊΠΎΠΉ Ρ‚ΠΈΠΏ ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ Π»ΡƒΡ‡ΡˆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ.

Для Π½Π°Ρ‡Π°Π»Π° посмотрим, Ρ‡Ρ‚ΠΎ Π΄Π°Π΅Ρ‚ Π½Π°ΠΌ использованиС ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ. Π’ качСствС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° Π½Π°Π·Π½Π°Ρ‡ΠΈΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ $a Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 123 ΠΈ Π²Ρ‹Π²Π΅Π΄Π΅ΠΌ Π΅Π΅ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ…:

$a = 123
$a.GetType()

Π—Π°Ρ‚Π΅ΠΌ сдСлаСм Ρ‚ΠΎ ΠΆΠ΅ самоС, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π·Π°ΠΊΠ»ΡŽΡ‡ΠΈΠΌ Π² ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ:

$a = β€³123β€³
$a.GetType()

Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΌ случаС пСрСмСнная ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… Int32 (32-разрядноС число), Π° Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ String (строка).

Β 

Из ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½ΠΎ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΈΠΏ String. Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, ΠΊΠΎΠ³Π΄Π° тСкст Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ, PowerShell рассматриваСт Π΅Π³ΠΎ ΠΊΠ°ΠΊ строку.

Надо ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ PowerShell ΠΈ сам ΡƒΠΌΠ΅Π΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ…. Π’Π°ΠΊ Ссли Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ состоит ΠΈΠ· ΠΎΠ΄Π½ΠΈΡ… Ρ†ΠΈΡ„Ρ€, Ρ‚ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ опрСдСляСтся ΠΊΠ°ΠΊ числовой, Ссли ΠΆΠ΅ Π² Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΈ содСрТится хотя Π±Ρ‹ ΠΎΠ΄Π½Π° Π±ΡƒΠΊΠ²Π°, Ρ‚ΠΎ PowerShell опрСдСляСт ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΊΠ°ΠΊ строку, Π²Π½Π΅ зависимости ΠΎΡ‚ наличия\отсутствия ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ.

Π’ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π½Π΅ ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ, Ссли Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ прСдставляСт ΠΈΠ· сСбя строку Π±Π΅Π· ΠΏΡ€ΠΎΠ±Π΅Π»ΠΎΠ². Для ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° смСним Ρ‚Π΅ΠΊΡƒΡ‰ΡƒΡŽ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡŽ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ:

Set-Location C:\Windows

Π₯отя ΠΏΡƒΡ‚ΡŒ ΠΊ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ ΡƒΠΊΠ°Π·Π°Π½ Π±Π΅Π· ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ, Ρ‚Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Π° ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π°. А Π²ΠΎΡ‚ такая ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π²Ρ‹Π·ΠΎΠ²Π΅Ρ‚ ΠΎΡˆΠΈΠ±ΠΊΡƒ:

Set-Location C:\Documents and Settings

Π”Π΅Π»ΠΎ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ для ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π° ΠΏΡ€ΠΎΠ±Π΅Π» ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, поэтому ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ Π·Π° ΠΏΡ€ΠΎΠ±Π΅Π»ΠΎΠΌ слово and опрСдСляСтся ΠΊΠ°ΠΊ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° с Ρ‚Π°ΠΊΠΈΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ Ρƒ ΠΊΠΎΠΌΠ°Π½Π΄Π»Π΅Ρ‚Π° Set-Location Π½Π΅Ρ‚, гСнСрируСтся ошибка. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Ρ€Π΅ΡˆΠ°Π΅Ρ‚ΡΡ просто, достаточно ΠΏΡƒΡ‚ΡŒ Π·Π°ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π² ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ‚Π°ΠΊ:

Set-Location β€²C:\Documents and Settingsβ€²

Β 

Π‘ Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ Π±ΠΎΠ»Π΅Π΅-ΠΌΠ΅Π½Π΅Π΅ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Π»ΠΈΡΡŒ, ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ ΠΊ ΠΈΡ… Ρ‚ΠΈΠΏΠ°ΠΌ.

Π’ PowerShell ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π²Π° Ρ‚ΠΈΠΏΠ° ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ β€”Β  ΠΎΠ΄ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ ΠΈ Π΄Π²ΠΎΠΉΠ½Ρ‹Π΅. Π’ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв Π½Π΅ Π²Π°ΠΆΠ½ΠΎ, ΠΊΠ°ΠΊΠΎΠΉ Ρ‚ΠΈΠΏ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ. Для ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° возьмСм Π΄Π²Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΈ присвоим ΠΈΠΌ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π£ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ $a Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ помСстим Π² Π΄Π²ΠΎΠΉΠ½Ρ‹Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ, Π° Ρƒ $b Π² ΠΎΠ΄ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅:

$a = ″ВСкст Π² ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°Ρ…β€³
$b = ′ВСкст Π² ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°Ρ…β€²

ВывСдя содСрТимоС ΠΎΠ±ΠΎΠΈΡ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚.

Β 

Как Π²ΠΈΠ΄ΠΈΡ‚Π΅, для выдСлСния ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠ³ΠΎ тСкста, Π½Π΅ содСрТащСго ΠΊΠ°ΠΊΠΈΡ… Π»ΠΈΠ±ΠΎ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… символов ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, ΠΏΠΎΠ΄ΠΎΠΉΠ΄Π΅Ρ‚ любой Ρ‚ΠΈΠΏ ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ. Однако Π΅ΡΡ‚ΡŒ нСсколько ситуаций, ΠΊΠΎΠ³Π΄Π° Ρ‚ΠΈΠΏ ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ ΠΈΠΌΠ΅Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.

Π’ тСкстС содСрТится пСрСмСнная

Если Π² строку, Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½Π½ΡƒΡŽ Π² ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ, Π½Π°Π΄ΠΎ Π²ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, Ρ‚ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π²ΠΎΠΉΠ½Ρ‹Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ. ΠŸΡ€ΠΈ использовании ΠΎΠ΄ΠΈΠ½Π°Ρ€Π½Ρ‹Ρ… ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ всС, Ρ‡Ρ‚ΠΎ находится Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊΒ  обрабатываСтся ΠΊΠ°ΠΊ тСст, Π²Π½Π΅ зависимости ΠΎΡ‚ содСрТимого. Волько ΠΏΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ Π΄Π²ΠΎΠΉΠ½Ρ‹Ρ… ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ PowerShell ΠΈΡ‰Π΅Ρ‚ Π²Π½ΡƒΡ‚Ρ€ΠΈ тСкста Π·Π½Π°ΠΊ $ ΠΈ подставляСт вмСсто ΠΈΠΌΠ΅Π½ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. НапримСр:

$c = ′строка′
$a = β€³$c Π² ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°Ρ…β€³
$b = β€²$c Π² ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°Ρ…β€²

Если Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ вывСсти значСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… $a ΠΈ $b, Ρ‚ΠΎ Π² ΠΏΠ΅Ρ€Π²ΠΎΠΌ случаС Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π²Π΅Π΄Π΅Π½ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, Π° Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ Π΅Π΅ имя.

Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… символов

Волько Π΄Π²ΠΎΠΉΠ½Ρ‹Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ Π΄Π°ΡŽΡ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ символы Π²Π½ΡƒΡ‚Ρ€ΠΈ тСкста. Π’ тСкстС, ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½ΠΎΠΌ Π΄Π²ΠΎΠΉΠ½Ρ‹ΠΌΠΈ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°ΠΌΠΈ, PowerShell ΠΈΡ‰Π΅Ρ‚ ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ символ β€” ΠΎΠ±Ρ€Π°Ρ‚Π½ΡƒΡŽ ΠΎΠ΄ΠΈΠ½Π°Ρ€Π½ΡƒΡŽ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΡƒ (`)Β  ΠΈ выполняСт ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π·Π° Π½Π΅ΠΉ спСц. символ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅. ВывСсти список спСц. символов ΠΌΠΎΠΆΠ½ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ Get-Help about_special_characters.

Π’ качСствС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ ΠΎΡ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ тСкст, вставив Π² Π½Π΅Π³ΠΎ символ n (пСрСнос строки):

$a = β€³`n Π‘Ρ‚Ρ€ΠΎΠΊΠ° 1 `n Π‘Ρ‚Ρ€ΠΎΠΊΠ° 2 `n Π‘Ρ‚Ρ€ΠΎΠΊΠ° 3 `nβ€³
$a = β€²`n Π‘Ρ‚Ρ€ΠΎΠΊΠ° 1 `n Π‘Ρ‚Ρ€ΠΎΠΊΠ° 2 `n Π‘Ρ‚Ρ€ΠΎΠΊΠ° 3 `nβ€²

Как Π²ΠΈΠ΄ΠΈΡ‚Π΅, спСц.символы Π² Π΄Π²ΠΎΠΉΠ½Ρ‹Ρ… ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°Ρ… ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Ρ‹ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ, Π° Π² ΠΎΠ΄ΠΈΠ½Π°Ρ€Π½Ρ‹Ρ… просто Π²Ρ‹Π²Π΅Π΄Π΅Π½Ρ‹ Π½Π° экран.

ΠšΠ°Π²Ρ‹Ρ‡ΠΊΠΈ Π² ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°Ρ…

Иногда ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ тСкст Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ. Но ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ Ρ‚ΠΈΠΏ ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ Π΄Π²Π°ΠΆΠ΄Ρ‹ Π½Π΅ получится, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΡ€ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ ΠΎΡˆΠΈΠ±ΠΊΡƒ:

$a = β€²ΠšΠ°Π²Ρ‹Ρ‡ΠΊΠΈ β€²Π²Π½ΡƒΡ‚Ρ€ΠΈβ€² ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊβ€²

Π° ΠΊΠΎΠΌΠ°Π½Π΄Π»Π΅Ρ‚ Write-Output Π½Π΅ выдаст ΠΎΡˆΠΈΠ±ΠΊΡƒ, Π½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ послС ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΠΏΠ°Ρ€Ρ‹ ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ пСрСнос строки:

Write-Output β€²ΠšΠ°Π²Ρ‹Ρ‡ΠΊΠΈ β€²Π²Π½ΡƒΡ‚Ρ€ΠΈβ€² ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊβ€²

Β 

ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ, Ссли Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ Π² строкС, Ρ‚ΠΎ придСтся ΠΈΡ… ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ β€” Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒΒ Π΄Π²ΠΎΠΉΠ½Ρ‹Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΎΠ΄ΠΈΠ½Π°Ρ€Π½Ρ‹Ρ… ΠΈΠ»ΠΈ ΠΎΠ΄ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ Π²Π½ΡƒΡ‚Ρ€ΠΈ Π΄Π²ΠΎΠΉΠ½Ρ‹Ρ…:

$a = β€²ΠšΠ°Π²Ρ‹Ρ‡ΠΊΠΈ β€³Π²Π½ΡƒΡ‚Ρ€ΠΈβ€³ ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊβ€²
$b = β€³ΠšΠ°Π²Ρ‹Ρ‡ΠΊΠΈ β€²Π²Π½ΡƒΡ‚Ρ€ΠΈβ€² ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊβ€³

Β 

ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ Π½Π°Π΄ΠΎ ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ для PowerShell Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ внСшняя ΠΏΠ°Ρ€Π° ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ. НапримСр Ρ‚Π°ΠΊ ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ имя ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ:

$c = β€²Π²Π½ΡƒΡ‚Ρ€ΠΈβ€²
$a = β€²ΠšΠ°Π²Ρ‹Ρ‡ΠΊΠΈ β€³$cβ€³ ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊβ€²

Π° Π²ΠΎΡ‚ Ρ‚Π°ΠΊ Π΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅:

$a = β€³ΠšΠ°Π²Ρ‹Ρ‡ΠΊΠΈ β€²$cβ€² ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊβ€³

Β 

И Π΅Ρ‰Π΅, говоря ΠΎ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°Ρ…, стоит ΡƒΠΏΠΎΠΌΡΠ½ΡƒΡ‚ΡŒ ΠΎ Ρ‚Π°ΠΊΠΎΠΉ Π²Π΅Ρ‰ΠΈ ΠΊΠ°ΠΊ экранированиС. Π‘ΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ символ (ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°, Π·Π½Π°ΠΊ $ ΠΈ ΠΏΡ€.), ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π·Π° ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΉ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΎΠΉ (`), экранируСтся β€” воспринимаСтся Π½Π΅ ΠΊΠ°ΠΊ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ, Π° ΠΊΠ°ΠΊ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ строковый символ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΏΡ€ΠΈ использовании ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΡŽΡŽ ΠΏΠ°Ρ€Ρƒ ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΡ€Π°Π½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ:

$a = β€³ΠšΠ°Π²Ρ‹Ρ‡ΠΊΠΈ `β€³Π²Π½ΡƒΡ‚Ρ€ΠΈ`β€³ ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊβ€³

Π’ΠΎΠ³Π΄Π° ΠΎΠ½ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹Π²Π΅Π΄Π΅Π½Ρ‹ ΠΊΠ°ΠΊ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ тСкст.

Β 

Π­ΠΊΡ€Π°Π½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с Π΄Π²ΠΎΠΉΠ½Ρ‹ΠΌΠΈ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°ΠΌΠΈ. ΠŸΡ€ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ΅ ΡΠΊΡ€Π°Π½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ символы Π² строкС, Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹Π΅ Π² ΠΎΠ΄ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ, ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ символ Π½ΠΈΠΊΠ°ΠΊ Π½Π΅ повлияСт Π½Π° исходныС Π΄Π°Π½Π½Ρ‹Π΅.

windowsnotes.ru

Power Shell. Π£Ρ€ΠΎΠΊ 4. Как ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ со строковыми значСниями | Windows IT Pro/RE

ΠŸΠΎΡ‡Ρ‚ΠΈ во всСх инструкциях PowerShell ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ строковыС значСния. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ ΠΎΠ½ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌ в качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ². Π’Β ΠΎΠ΄Π½ΠΈΡ… случаях строковыС значСния Π·Π°ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ΡΡ Π²Β ΠΎΠ΄ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ, Π²Β Π΄Ρ€ΡƒΠ³ΠΈΡ… β€” Π²Β Π΄Π²ΠΎΠΉΠ½Ρ‹Π΅, Π°Β ΠΈΠ½ΠΎΠ³Π΄Π° и вовсС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π±Π΅Π· ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ. Π’Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с кавычками. ΠŸΡ€Π°Π²ΠΈΠ»Π°, Ρ€Π΅Π³ΡƒΠ»ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ эту Ρ€Π°Π±ΠΎΡ‚Ρƒ, часто Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌΠΈ Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π²Β ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ. На сСгодняшнСм ΡƒΡ€ΠΎΠΊΠ΅ Ρ€Π΅Ρ‡ΡŒ ΠΏΠΎΠΉΠ΄Π΅Ρ‚ об этих ΠΏΡ€Π°Π²ΠΈΠ»Π°Ρ…. В частности, я расскаТу ΠΎΒ Ρ‚ΠΎΠΌ, ΠΊΠΎΠ³Π΄Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ строковыС значСния Π²Β ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ ΠΈΒ ΠΊΠ°ΠΊΠΈΠ΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ β€” Π΄Π²ΠΎΠΉΠ½Ρ‹Π΅ ΠΈΠ»ΠΈ ΠΎΠ΄ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅, Π°Β Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΒ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ ΠΌΠ°Ρ€ΠΊΠΈΡ€ΡƒΡŽΡ‚ΡΡ, ΠΈΠ»ΠΈ ΡΠΊΡ€Π°Π½ΠΈΡ€ΡƒΡŽΡ‚ΡΡ, ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ символы.

Π Π°Π±ΠΎΡ‚Π° со строковыми значСниями

Всякий Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° тСкст Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π²Β ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ, PowerShell рассматриваСт Π΅Π³ΠΎ ΠΊΠ°ΠΊ строковоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ, Ссли Ρ‚ΠΎΠ»ΡŒΠΊΠΎ тСкст Π½Π΅ содСрТит ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… символов (ΠΈΠΌΠΈ ΠΌΡ‹ займСмся ΠΎΡ‡Π΅Π½ΡŒ скоро) ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ссылочного Ρ‚ΠΈΠΏΠ°Β (Ρ€Π΅Ρ‡ΡŒ ΠΎΒ Ρ‚Π°ΠΊΠΈΡ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΏΠΎΠΉΠ΄Π΅Ρ‚ Π½Π°Β ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΡƒΡ€ΠΎΠΊΠ΅), Ρ‚Π°ΠΊΠΎΠΉ тСкст ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Π²Β ΠΎΠ΄ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ Π»ΠΈΠ±ΠΎ Π²Β Π΄Π²ΠΎΠΉΠ½Ρ‹Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ. Π’Π°ΠΊ, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ инструкции Π΄Π°ΡŽΡ‚ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½Ρ‹Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹:

Write-Output «StringΒ in quotes.»
Write-Output ‘StringΒ in quotes.’

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ… ΠΊΠΎΠΌΠ°Π½Π΄Π° Write-Output направляСт строковый ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π²Β ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€, Π°Β Π²Β Π΄Π°Π½Π½ΠΎΠΌ случаС β€” нСпосрСдствСнно на консоль PowerShell. Как ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ на экранС 1, ΠΎΠ±Π΅ инструкции ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΠ΄Π½ΠΎ ΠΈΒ Ρ‚ΠΎΒ ΠΆΠ΅ Π²Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.

Β 

Π§Ρ‚ΠΎΠ±Ρ‹ вывСсти Π΄Π°Π½Π½Ρ‹Π΅ на консоль, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Write-Output, Π½ΠΎΒ ΠΈΒ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Π²Β PowerShell ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Out-Host, Π°Β Ρ‚Π°ΠΊΠΆΠ΅ Write-Host. Различия ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ в дСталях. Π’Π°ΠΊ, ΠΊΠΎΠΌΠ°Π½Π΄Π° Write-Output направляСт Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠΎΒ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€Ρƒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Π΅. Когда ТС Write-Output являСтся послСднСй ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ Π²Β ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€Π΅, Π΅Π΅ Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°ΡŽΡ‚ΡΡ в консоли. Команда Out-Host направляСт свои Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ нСпосрСдствСнно на консоль. Она ΠΈΠΌΠ΅Π΅Ρ‚ Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт ΠΏΡ€ΠΎΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ поэкранно, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ ΠΏΡ€ΠΈ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΎΠ±ΡŠΠ΅ΠΌΠ°Ρ… Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…. Out-Host ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ в качСствС Π²Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΏΠΎΒ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, поэтому Ссли Π²Ρ‹ Π½Π΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚Π΅, какая ΠΊΠΎΠΌΠ°Π½Π΄Π° являСтся Π²Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠΉ, примСняСтся ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΎΠ½Π°. Команда Write-Host Ρ‚ΠΎΠΆΠ΅ направляСт Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ нСпосрСдствСнно на консоль. Но она ΠΈΠΌΠ΅Π΅Ρ‚ Π΄Π²Π° Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄Π°ΡŽΡ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ Ρ†Π²Π΅Ρ‚ тСкста ΠΈΠ»ΠΈ Ρ„ΠΎΠ½Π°, Π½Π°Β ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ отобраТаСтся тСкст, Ρ‡Ρ‚ΠΎ позволяСт Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ консоль в соотвСтствии с поТСланиями ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ.

ΠŸΡ€ΠΈ использовании Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹Ρ… Π²Β ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ Π±Π°Π·ΠΎΠ²Ρ‹Ρ… строковых Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ нСпосрСдствСнно Π²Β ΠΎΠΊΠ½ΠΎ консоли, всС Ρ‚Ρ€ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π²Π΅Π΄ΡƒΡ‚ сСбя ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ. ΠšΒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, всС Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠ΅ΠΌΡ‹Π΅ Π½ΠΈΠΆΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°ΡŽΡ‚ строку Π²Β ΠΎΠΊΠ½Π΅ консоли Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ на экранС 1:

«StringΒ in quotes.»
Write-Output «StringΒ in quotes.»
Write-Host «StringΒ in quotes.»
Out-Host ` – InputObject «StringΒ in quotes».

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: Π²Β ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ Π³Π»Π°Π³ΠΎΠ» Π½Π΅ ΡƒΠΊΠ°Π·Π°Π½. Π’Β Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π° Out-Host.

Надо ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π²ΠΎΒ ΠΌΠ½ΠΎΠ³ΠΈΡ… ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΠΌΡ‹Ρ… Π²Β ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ… ΡΒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Write-Output, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½Π° Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с выходным ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ Ρ‚Π°ΠΊΒ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈΒ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹. Π’Π°ΠΊ ΡΒ ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹, примСняСмыС Π²Β ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΈ Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹Ρ… Π²Β ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ. Π’ΠΏΡ€ΠΎΡ‡Π΅ΠΌ, Π½Π΅ слСдуСт Π·Π°Π±Ρ‹Π²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Write-Output, Out-Host ΠΈΒ Write-Host Π²Β Ρ€Π°Π·Π½Ρ‹Ρ… ΠΎΠ±ΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΡΡ‚Π²Π°Ρ… ΠΌΠΎΠ³ΡƒΡ‚ вСсти сСбя ΠΏΠΎ-Ρ€Π°Π·Π½ΠΎΠΌΡƒ. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ свСдСния об этих ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ… ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ в справочных Ρ„Π°ΠΉΠ»Π°Ρ….

Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ Π²Π½ΡƒΡ‚Ρ€ΠΈ строки, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Π²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΎΠ΄ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ Π²Π½ΡƒΡ‚Ρ€ΠΈ Π΄Π²ΠΎΠΉΠ½Ρ‹Ρ… ΠΈΠ»ΠΈ Π΄Π²ΠΎΠΉΠ½Ρ‹Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΎΠ΄ΠΈΠ½Π°Ρ€Π½Ρ‹Ρ…:

Write-Output «String ‘in’ quotes.»
Write-Output ‘String «in» quotes.’

ВСрнСмся к экрану 1. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Π²Β ΠΎΠ±ΠΎΠΈΡ… случаях Π²Β Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°ΡŽΡ‚ΡΡ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ. Π˜Π½Ρ‹Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‚ΡΡ, Ссли в строкС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°:

Write-Output «String «in» quotes.»
Write-Output ‘String ‘in’ quotes.’

Π’ ΠΎΠ±ΠΎΠΈΡ… случаях ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ Π½Π΅ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°ΡŽΡ‚ΡΡ, и добавляСтся новая строка. Π”Π΅Π»ΠΎ Π²Β Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ PowerShell ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ эту ΠΎΠ΄Π½Ρƒ строку ΠΊΠ°ΠΊ нСсколько строк ΠΈ, соотвСтствСнно, добавляСт символ пСрСноса строки. Π’Π°ΠΊ, PowerShell истолковываСт String ΠΊΠ°ΠΊ ΠΏΠ΅Ρ€Π²ΡƒΡŽ строку (ΠΈΒ ΠΏΠΎΡ‚ΠΎΠΌΡƒ добавляСт послС Π½Π΅Π΅ символ пСрСноса строки), Π°Β Π·Π°Ρ‚Π΅ΠΌ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΎΡΡ‚Π°Π²ΡˆΡƒΡŽΡΡ Ρ‡Π°ΡΡ‚ΡŒ тСкста ΠΊΠ°ΠΊ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΡƒΡŽ строку. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π²ΠΎΠΉΠ½Ρ‹Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ Π²Π½ΡƒΡ‚Ρ€ΠΈ Π΄Π²ΠΎΠΉΠ½Ρ‹Ρ… ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ, Π½ΠΎΒ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ ΠΏΡ€ΠΈ этом придСтся ΡΠΊΡ€Π°Π½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΒ (ΠΎΒ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ это дСлаСтся, я расскаТу ΠΏΠΎΠ·ΠΆΠ΅).

Π˜Ρ‚Π°ΠΊ, ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с кавычками всСгда Π±ΡƒΠ΄ΡŒΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ ΠΈΒ Π½Π΅ ΠΏΡƒΡ‚Π°ΠΉΡ‚Π΅ Ρ‚ΠΈΠΏ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊΒ (Π°Β Ρ‚Π°ΠΊΠΆΠ΅ Π½Π΅ Π·Π°Π±Ρ‹Π²Π°ΠΉΡ‚Π΅ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ Ρ‚ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°). Π˜Π½Π°Ρ‡Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»Π°: систСма ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ ввСсти Π½Π΅ΠΊΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Π½ΠΎΒ Ρ‡Ρ‚ΠΎΒ Π±Ρ‹ Π²Ρ‹ Π½ΠΈΒ Π²Π²ΠΎΠ΄ΠΈΠ»ΠΈ, Ρ†ΠΈΠΊΠ» Π½Π΅ прСрываСтся. ΠšΡΡ‚Π°Ρ‚ΠΈ, Ссли Π²Ρ‹ ΠΏΠΎΠΏΠ°Π΄Π΅Ρ‚Π΅ Π²Β Ρ‚Π°ΠΊΡƒΡŽ ΡΠΈΡ‚ΡƒΠ°Ρ†ΠΈΡŽ, Π½Π°ΠΆΠΌΠΈΡ‚Π΅ сочСтаниС клавиш Ctrl+C, ΠΈΒ Π²Ρ‹ Π²Π΅Ρ€Π½Π΅Ρ‚Π΅ΡΡŒ ΠΊΒ ΠΏΡ€ΠΈΠ³Π»Π°ΡˆΠ΅Π½ΠΈΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки.

ΠŸΡ€ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π½ΡƒΠΆΠ½ΠΎ ΠΈΠΌΠ΅Ρ‚ΡŒ Π²Β Π²ΠΈΠ΄Ρƒ Π΅Ρ‰Π΅ ΠΎΠ΄Π½ΠΎ ΠΎΠ±ΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΡΡ‚Π²ΠΎ, Π°Β ΠΈΠΌΠ΅Π½Π½ΠΎ: ΠΊΠ°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ° PowerShell Ρ‚Ρ€Π°ΠΊΡ‚ΡƒΠ΅Ρ‚ числСнныС значСния. Как я уТС Π³ΠΎΠ²ΠΎΡ€ΠΈΠ», всС Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹Π΅ Π²Β ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ значСния PowerShell рассматриваСт ΠΊΠ°ΠΊ строки β€” Π΄Π°ΠΆΠ΅ Ссли значСния состоят ΠΈΠ·Β ΠΎΠ΄Π½ΠΈΡ… Ρ‚ΠΎΠ»ΡŒΠΊΠΎ чисСл.

Write-Output «123»

Когда выполняСтся эта инструкция (показанная на экранС 2), Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ являСтся строковым ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ. Π’ΠΈΠΏ этого значСния ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ² ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽΒ 

(Write-Output «123»).GetTypeΒ ()

Π’ Π΄Π°Π½Π½ΠΎΠΉ инструкции ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄ Ρ‚ΠΈΠΏΠ° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° GetType, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ в нашСм случаС являСтся Ρ‚ΠΈΠΏΠΎΠΌ String, Π°Β Ρ‚ΠΎΡ‡Π½Π΅Π΅ β€” System.StringΒ (Ρ‡Ρ‚ΠΎ Ρ‚ΠΎΠΆΠ΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ на экранС 2). Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ свСдСния ΠΎΒ System.String ΠΈΒ GetType ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ Π²ΠΎΒ Π²Ρ€Π΅Π·ΠΊΠ΅ Β«ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ и использованиС Ρ‡Π»Π΅Π½ΠΎΠ² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² System.StringΒ».

Если числСнноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π½Π΅ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π²Β ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ, PowerShell рассматриваСт Π΅Π³ΠΎ ΠΊΠ°ΠΊ числовой ΠΎΠ±ΡŠΠ΅ΠΊΡ‚. Π’Π°ΠΊ, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ инструкция Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ цСлочислСнный ΠΎΠ±ΡŠΠ΅ΠΊΡ‚:

Write-Output 123

И в этом случаС Ρ‚ΠΈΠΏ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ ΡΒ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° GetType:

(Write-Output 123).GetTypeΒ ()

Как Π²ΠΈΠ΄Π½ΠΎ на экранС 2, ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ‚ Ρ‚ΠΈΠΏΡƒΒ Int32.

Если Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ в сСбя ΠΊΠ°ΠΊ Ρ†ΠΈΡ„Ρ€Ρ‹, Ρ‚Π°ΠΊ ΠΈΒ Π±ΡƒΠΊΠ²Ρ‹, PowerShell рассматриваСт Π΅Π³ΠΎ ΠΊΠ°ΠΊ строку Π²Π½Π΅ зависимости от наличия ΠΈΠ»ΠΈ отсутствия ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ. Π’Π°ΠΊ, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ инструкция Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ строку, Ρ‡Ρ‚ΠΎ подтвСрТдаСтся ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ Π²Ρ‚ΠΎΡ€ΠΎΠΉ инструкции:

Write-Output 123Β output
(Write-Output 123Β output).GetTypeΒ ()

И вновь Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ этих инструкций ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ на экранС 2.

Π’ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ, Ссли Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ прСдставляСт собой строку, Π½Π΅ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‰ΡƒΡŽ ΠΏΡ€ΠΎΠ±Π΅Π»ΠΎΠ². Π’Β Ρ‚Ρ€Π΅Ρ… ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… инструкциях ΠΊΠΎΠΌΠ°Π½Π΄Π° Set-Location ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ в качСствС Ρ€Π°Π±ΠΎΡ‡Π΅ΠΉ ΠΏΠ°ΠΏΠΊΠΈ Π½Π°ΠΊΠΎΠΏΠΈΡ‚Π΅Π»ΡŒ C.

Set-Location C:
Set-Location «C:»
Set-Location β€˜C:’

А Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ прСдставим сСбС, Ρ‡Ρ‚ΠΎ в качСствС Ρ€Π°Π±ΠΎΡ‡Π΅ΠΉ Π½ΡƒΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π½ΠΎΠ²ΡƒΡŽ ΠΏΠ°ΠΏΠΊΡƒ β€” C:Documents and Settings:

Set-Location `
C:Documents and Settings

Π­Ρ‚Π° инструкция Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ ошибкой, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π½Π΅ Π·Π½Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ с маркСрами (словами), ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌΠΈ послС ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ±Π΅Π»Π°. Как явствуСт из экрана 3, Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ рассматриваСт слово Β«andΒ» ΠΊΠ°ΠΊ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€, Π°Β ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° с таким ΠΈΠΌΠ΅Π½Π΅ΠΌ Π½Π΅ сущСствуСт, Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΎΡˆΠΈΠ±ΠΊΡƒ. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Ρ€Π΅ΡˆΠ°Π΅Ρ‚ΡΡ Π»Π΅Π³ΠΊΠΎ β€” вСсь Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π²Β ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ:

Set-Location `
«C:Documents and Settings»

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ Π΄Π°Π½Π½ΠΎΠΉ инструкции мСняСтся рабочая ΠΏΠ°ΠΏΠΊΠ°, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ на экранС 3.

Π•Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ Π²Π°ΠΆΠ½Ρ‹ΠΉ вопрос состоит Π²Β Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ Π½ΡƒΠΆΠ½ΠΎ ΡΡΡ‹Π»Π°Ρ‚ΡŒΡΡ Π½Π°Β ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ содСрТатся Π²Β Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½Π½ΠΎΠΉ Π²Β ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ строкС. Если строка Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½Π° Π²Β Π΄Π²ΠΎΠΉΠ½Ρ‹Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ. Если ТС строка Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½Π° Π²Β ΠΎΠ΄ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ, примСняСтся Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π»ΠΈΡ‚Π΅Ρ€Π°Π»Π°. Как я уТС ΠΎΡ‚ΠΌΠ΅Ρ‡Π°Π», ΠΎΒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, Π°Β Ρ‚Π°ΠΊΠΆΠ΅ о способах ссылки Π½Π°Β ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ в строках Ρ€Π΅Ρ‡ΡŒ ΠΏΠΎΠΉΠ΄Π΅Ρ‚ Π²Β ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅. Π’ΠΏΡ€ΠΎΡ‡Π΅ΠΌ, Ссли Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΠΆΠ΅ сСйчас ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ об использовании ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… в строках, ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ΡΡŒ к справочному Ρ„Π°ΠΉΠ»Ρƒ about_quoting_rules.

Π­ΠΊΡ€Π°Π½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… символов в строках

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹Ρ… Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ… использовались Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ Π²Β ΠΎΠ΄ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅, Ρ‚Π°ΠΊ ΠΈΒ Π²Β Π΄Π²ΠΎΠΉΠ½Ρ‹Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ. Π’Β Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΡƒΒ Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ»ΠΎΠΆΠΈΡ‚ΡŒΡΡ Π²ΠΏΠ΅Ρ‡Π°Ρ‚Π»Π΅Π½ΠΈΠ΅, Π±ΡƒΠ΄Ρ‚ΠΎ ΠΌΠ΅ΠΆΠ΄Ρƒ двумя Ρ‚ΠΈΠΏΠ°ΠΌΠΈ ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ Π½Π΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠΉ. Однако Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ Π΅ΡΡ‚ΡŒ, ΠΏΡ€ΠΈΡ‡Π΅ΠΌ вСсьма Π²Π°ΠΆΠ½ΠΎΠ΅: ΠΎΠ΄ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ всСгда ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ строку ΠΊΠ°ΠΊ Π»ΠΈΡ‚Π΅Ρ€Π°Π», Ρ‚ΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ Π΄Π²ΠΎΠΉΠ½Ρ‹Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ Π΄Π°ΡŽΡ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡΠΊΡ€Π°Π½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ символы Π²Π½ΡƒΡ‚Ρ€ΠΈ тСкста. Π‘ΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ символ β€” это Ρ‚Π°ΠΊΠΎΠΉ символ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ, Ссли слСдуСт послС ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΉ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈΒ (`), прСдписываСт ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΏΡ€Π΅Π΄ΠΏΡ€ΠΈΠ½ΡΡ‚ΡŒ Ρ‚ΠΎΒ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠ΅ дСйствиС; Ссли ТС ΠΏΠ΅Ρ€Π΅Π΄ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌ символом ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΉ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ Π½Π΅Ρ‚, упомянутоС дСйствиС Π½Π΅ ΡΠΎΠ²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ. Π’Β Ρ‚Π°Π±Π»ΠΈΡ†Π΅Β ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΏΠ΅Ρ€Π΅Ρ‡Π΅Π½ΡŒ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… символов ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ PowerShell.

Π­Ρ‚Ρƒ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΡŽ ΡƒΠ΄ΠΎΠ±Π½Π΅Π΅ всСго ΠΎΡΠ²Π°ΠΈΠ²Π°Ρ‚ΡŒ Π½Π°Β ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ…. Π’Β ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… инструкциях ряд символов экранируСтся с тСм, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ отобраТСния тСкста.

Write-OutputΒ («`n`tTextΒ includes» + ` «`n`t`»escaped`» characters.`n»)

ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ экранированный символ (ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π·Π°Β ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΉ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΎΠΉ) β€” это Π»ΠΈΡ‚Π΅Ρ€Π° n; Π²Β Π΄Π°Π½Π½ΠΎΠΌ контСкстС ΠΎΠ½Π° прСдписываСт Π²ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π½ΠΎΠ²ΡƒΡŽ строку. Π’Ρ‚ΠΎΡ€ΠΎΠΉ экранированный символ β€” t; ΠΎΠ½ вставляСт Π·Π½Π°ΠΊ табуляции. ΠžΡ‚ΠΌΠ΅Ρ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎ обратная ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ° Π²Β ΠΊΠΎΠ½Ρ†Π΅ ΠΏΠ΅Ρ€Π²ΠΎΠΉ строки рассматриваСтся Π½Π΅ ΠΊΠ°ΠΊ символ экранирования, Π°Β ΠΊΠ°ΠΊ символ продолТСния (см.Β ΡƒΡ€ΠΎΠΊ 2). Π’ΠΎΒ Π²Ρ‚ΠΎΡ€ΠΎΠΉ строкС символы `n ΠΈΒ `t ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π΅Ρ‰Π΅ нСсколько Ρ€Π°Π·. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΡΡŽΡ‚ Π΄Π²ΠΎΠΉΠ½Ρ‹Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ, ΠΎΠ±Ρ€Π°ΠΌΠ»ΡΡŽΡ‰ΠΈΠ΅ слово escaped. Π’Β Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ эти Π΄Π²ΠΎΠΉΠ½Ρ‹Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°ΡŽΡ‚ΡΡ Π²Β Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…. Взглянув на экран 4, Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅, ΠΊΠ°ΠΊ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°ΡŽΡ‚ΡΡ Π½ΠΎΠ²Ρ‹Π΅ строки, Π·Π½Π°ΠΊΠΈ табуляции ΠΈΒ Π΄Π²ΠΎΠΉΠ½Ρ‹Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ свСдСния об экранировании символов ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ в справочном Ρ„Π°ΠΉΠ»Π΅ about_escape_character.

Β 

Если Π²Ρ‹ ΠΏΠΎΠΏΡ‹Ρ‚Π°Π΅Ρ‚Π΅ΡΡŒ ΡΠΊΡ€Π°Π½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ символы в строкС, Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½Π½ΠΎΠΉ Π²Β ΠΎΠ΄ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ, обратная ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ° ΠΈΒ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ символы Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Π²Π»ΠΈΡΡ‚ΡŒ Π½Π°Β Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ с тСм ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ, Ρ‡Ρ‚ΠΎ эти Π΄Π°Π½Π½Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ Π»ΠΈΡ‚Π΅Ρ€Π°Π». ΠšΒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, ΠΊΠΎΠΌΠ°Π½Π΄Π°

Write-Output ‘`tindented`n`twords’

Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ΠΈΡ‚ строку в точности Π²Β Ρ‚ΠΎΠΉΒ ΠΆΠ΅ Ρ„ΠΎΡ€ΠΌΠ΅, Π²Β ΠΊΠ°ΠΊΠΎΠΉ ΠΎΠ½Π° Π±Ρ‹Π»Π° Π²Π²Π΅Π΄Π΅Π½Π°Β (см. экран 4). ΠžΡ‚ΠΌΠ΅Ρ‚ΠΈΠΌ, кстати, Ρ‡Ρ‚ΠΎ Π²Β ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… выпусках PowerShell ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠ³ ΡΠΊΡ€Π°Π½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ символы Π²Π½ΡƒΡ‚Ρ€ΠΈ строк, Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹Ρ… Π²Β ΠΎΠ΄ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ, ΠΈΒ ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ° ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π»Π° ΠΈΡ…. Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ Π²Π°ΠΌ ΠΌΠΎΠ³ΡƒΡ‚ Π²ΡΡ‚Ρ€Π΅Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹, Π²Β ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… утвСрТдаСтся, Π±ΡƒΠ΄Ρ‚ΠΎ PowerShell ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ строки Π²Β ΠΎΠ΄ΠΈΠ½Π°Ρ€Π½Ρ‹Ρ… ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°Ρ….

На ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… ΡƒΡ€ΠΎΠΊΠ°Ρ…

Π’ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв строковыС значСния ΠΈΠ³Ρ€Π°ΡŽΡ‚ Π²Π°ΠΆΠ½ΡƒΡŽ Ρ€ΠΎΠ»ΡŒ Π²Β Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ инструкций PowerShell. Π˜Β Ρ‡Π΅ΠΌ Π»ΡƒΡ‡ΡˆΠ΅ Π²Ρ‹ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ‚Π΅, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ со строками, Ρ‚Π΅ΠΌ большС ΠΏΠΎΠ»ΡŒΠ·Ρ‹ принСсут создаваСмыС Π²Π°ΠΌΠΈ инструкции. Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ читатСлям Π½Π΅ ΠΆΠ°Π»Π΅Ρ‚ΡŒ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π½Π°Β ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠ΅ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² использования строк. ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ Π·Π°ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ строку Π²Β ΠΎΠ΄ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ ΠΈΒ Π²Β Π΄Π²ΠΎΠΉΠ½Ρ‹Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ, Π°Β Π·Π°Ρ‚Π΅ΠΌ ΠΏΠΎΡΡ‚Π°Ρ€Π°ΠΉΡ‚Π΅ΡΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π±Π΅Π· ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ. И нС Π·Π°Π±Ρ‹Π²Π°ΠΉΡ‚Π΅ ΠΎΡΠ²Π°ΠΈΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ экранирования ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… символов.

Π ΠΎΠ±Π΅Ρ€Ρ‚ Π¨Π΅Π»Π΄ΠΎΠ½Β ([email protected]) β€” тСхничСский ΠΊΠΎΠ½ΡΡƒΠ»ΡŒΡ‚Π°Π½Ρ‚ ΠΈΒ Π°Π²Ρ‚ΠΎΡ€ большого количСства ΠΊΠ½ΠΈΠ³ по тСхнологиям Microsoft Windows ΠΈΒ Π±Π°Π·Π°ΠΌ Π΄Π°Π½Π½Ρ‹Ρ…

ПoΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΈ использованиС Ρ‡Π»Π΅Π½ΠΎΠ² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² System.String

Π±ΠΎΠ»ΠΎΡ‡ΠΊΠ° PowerShell рассматриваСт всС строки ΠΊΠ°ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ System.String. Π­Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ в распоряТСниС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ поступаСт Π±ΠΎΠ³Π°Ρ‚Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² и свойств Π΄Π°Π½Π½Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². Как Π±Ρ‹Π»ΠΎ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π²Β ΡƒΡ€ΠΎΠΊΠ΅ 3, ΠΊΠΎΠΌΠ°Π½Π΄Π° Get-Member считываСт Ρ‡Π»Π΅Π½Ρ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° в то врСмя, ΠΊΠΎΠ³Π΄Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ пСрСдаСтся ΠΏΠΎΒ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€Ρƒ. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ строка пСрСдаСтся Π²Β Π²ΠΈΠ΄Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, для этой строки ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Get-Member. ΠšΒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ инструкция считываСт Ρ‡Π»Π΅Π½ΠΎΠ² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° для строки test output:

«test output» | Get-Member

Как ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ на экранС A, строковый ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ большоС число ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Substring ΠΈΒ GetType. Если бы ΠΌΡ‹ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΠ»ΠΈ просмотр ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ на экранС списка, Ρ‚ΠΎΒ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ»ΠΈΒ Π±Ρ‹ свойство Length, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΎΡ‚Ρ€Π°ΠΆΠ°Π΅Ρ‚ число символов в строкС.

Β 

Π’Π΅ΠΏΠ΅Ρ€ΡŒ прСдставим сСбС, Ρ‡Ρ‚ΠΎ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎΒ ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ Substring ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° System.String. ΠžΠΏΡΡ‚ΡŒ-Ρ‚Π°ΠΊΠΈ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π½ΡƒΠΆΠ½Ρ‹Π΅ свСдСния ΡΒ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Get-Member. Достаточно ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ Substring в качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° Get-Member ΠΈΒ Π΄Π°Π»Π΅Π΅ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ ΠΏΠΎΒ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€Ρƒ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ Format-List

«test output» |
Get-Member Substring |
Format-List

На экранС B ΠΏΠΎΠΊΠ°Π·Π°Π½ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния этой инструкции. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π°Β Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π΄Π΅Ρ‚Π°Π»ΠΈ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ использования ΠΌΠ΅Ρ‚ΠΎΠ΄Π°. Π­Ρ‚ΠΎ синтаксис Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°. Бинтаксис ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡ€ΠΈΠ΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ·Β Π΄Π²ΡƒΡ… ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΎΠ². Π’ΠΎΡ‚ ΠΎΠ½ΠΈ:

System.String SubstringΒ (Int32Β startIndex)
System.String SubstringΒ (Int32Β startIndex, Int32Β length)

ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚ ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ Ρ†Π΅Π»Π΅Π²ΠΎΠΉ строки ΠΈΒ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ, с которой Π΄ΠΎΠ»ΠΆΠ½Π° Π½Π°Ρ‡ΠΈΠ½Π°Ρ‚ΡŒΡΡ подстрока. Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ подстроку, которая начинаСтся с указанной ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ ΠΈΒ Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ Π²Β ΠΊΠΎΠ½Ρ†Π΅ строки. НапримСр, Ссли цСлСвая строка — test output, ΠΈΒ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ подстроку, которая начинаСтся с позиции 5, ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ

(«test output»).SubstringΒ (5)

которая Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ΠΈΡ‚ подстроку output. Как ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ эта инструкция, Ρ†Π΅Π»Π΅Π²ΡƒΡŽ строку Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ в скобки, ΠΏΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Ρ‚ΠΎΡ‡ΠΊΡƒ, Π°Β Π·Π°Ρ‚Π΅ΠΌ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ имя ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠΈΒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹, ΠΎΠΏΡΡ‚ΡŒ-Ρ‚Π°ΠΊΠΈ Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹Π΅ в скобки.

ΠŸΡ€ΠΈ использовании Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Ρ†Π΅Π»Π΅Π²ΡƒΡŽ строку, Π°Β Ρ‚Π°ΠΊΠΆΠ΅ ΡΡ‚Π°Ρ€Ρ‚ΠΎΠ²ΡƒΡŽ ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ ΠΈΒ Π΄Π»ΠΈΠ½Ρƒ подстроки. Допустим, Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ подстроку, которая начинаСтся Π²Β Π½Π°Ρ‡Π°Π»Π΅ строки (позиция 0) ΠΈΒ ΠΈΠΌΠ΅Π΅Ρ‚ Π΄Π»ΠΈΠ½Ρƒ Π²Β Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ символа. Π˜Ρ‚Π°ΠΊ, создаСм ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ

(«test output»).SubstringΒ (0,4)

ΠΈ ΠΎΠ½Π° Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π½Π°ΠΌ подстроку test.

Когда ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Substring ΠΈΠ»ΠΈ GetType, этот ΠΌΠ΅Ρ‚ΠΎΠ΄ создаСт собствСнный ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½ ΠΏΠΎΒ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€Ρƒ. Π’Β Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΒ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Get-Member ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ список этих Ρ‡Π»Π΅Π½ΠΎΠ² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. ΠšΒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, ΠΌΠ΅Ρ‚ΠΎΠ΄ GetType Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ System.RuntimeType, а этот ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ многочислСнныС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ и свойства. Π‘Π»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ инструкция Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ список свойств, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ располагаСт ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ System.RuntimeType:

(«test output»).GetTypeΒ () |
Get-Member -MemberType Property

Как ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ инструкция, сначала Π½ΡƒΠΆΠ½ΠΎ Π·Π°ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ строку в скобки, Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Ρ‚ΠΎΡ‡ΠΊΡƒ ΠΈΒ Π·Π°Ρ‚Π΅ΠΌ ввСсти имя ΠΌΠ΅Ρ‚ΠΎΠ΄Π° β€” Π²Β Π΄Π°Π½Π½ΠΎΠΌ случаС это GetType. Π—Π°Ρ‚Π΅ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ GetType, пСрСдаСтся ΠΏΠΎΒ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€Ρƒ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ Get-Member. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: я использовал ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ MemberType для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π΅Π½Π½Ρ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ прСдставлСны на экранС Π‘.

Power Shell. Π£Ρ€ΠΎΠΊ 4. Как ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ со строковыми значСниями

ΠŸΠΎΠ΄Π΅Π»ΠΈΡ‚Π΅ΡΡŒ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»ΠΎΠΌ с ΠΊΠΎΠ»Π»Π΅Π³Π°ΠΌΠΈ ΠΈ Π΄Ρ€ΡƒΠ·ΡŒΡΠΌΠΈ

www.osp.ru

Как ΡΠΊΡ€Π°Π½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ содСрТимоС динамичСской ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π² PowerShell?

Π’Π›; Π΄Ρ€

  • Π’Π°ΡˆΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π° Π΄ΠΎΠ»ΠΆΠ½Π° Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ — ΠΊΡ€ΠΎΠΌΠ΅ случаСв, ΠΊΠΎΠ³Π΄Π° $password содСрТит символы «.

    • Напротив, $ chars. НС Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ.
  • Π’Π°Ρˆ ΠΌΠ΅Ρ‚ΠΎΠ΄ /pass:"`"$password`"" , Ρ‚. Π•. Π―Π²Π½Ρ‹Π΅ встроСнныС Π΄Π²ΠΎΠΉΠ½Ρ‹Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ, Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ значСния со встроСнными ΠΏΡ€ΠΎΠ±Π΅Π»Π°ΠΌΠΈ , Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° /pass:$password (Ρ‚Π°ΠΊΠΆΠ΅), ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ Π² ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΌ ΠΎΡ‚Π²Π΅Ρ‚Π΅ Π‘ΠΈΠ»Π»Π° Π‘Ρ‚ΡŽΠ°Ρ€Ρ‚Π° .

    • Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ, опуская внСшнюю ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΡƒ "..." , ΠΊΠ°ΠΊ это Ρ‚Π°ΠΊΠΆΠ΅ прСдлагаСтся Π² ΠΎΡ‚Π²Π΅Ρ‚Π΅ Π‘ΠΈΠ»Π»Π°:
      /pass:`"$password`"
  • Π§Ρ‚ΠΎ касаСтся ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ " chars. Π’ значСниях: Π΄Π°ΠΆΠ΅ \ -экранированиС ΠΈΡ… Π½Π΅ всСгда Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ, ΠΊΠΎΠ³Π΄Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹ — см. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΡΡ‚ΠΈ Π½ΠΈΠΆΠ΅.


ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ ломаСтся, ΠΊΠΎΠ³Π΄Π° ΠΏΠ°Ρ€ΠΎΠ»ΡŒ содСрТит символ $.

Π’Π°ΡˆΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚ Π»ΡŽΠ±Ρ‹Π΅ символы $ встроСнныС Π² Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ $password Π² Ρ†Π΅Π»Π΅Π²ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ ΠΊΠ°ΠΊ Π΅ΡΡ‚ΡŒ.

ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ, Ссли Π΅ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°, подразумСваСтся, Ρ‡Ρ‚ΠΎ ваша цСлСвая ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° — cmdkey.exe — ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ символы $ , Π½ΠΎ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹ Π½Π΅ ΡƒΠΏΠΎΠΌΠΈΠ½Π°ΡŽΡ‚ ΠΎΠ± этом.
Однако, Ссли это Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ‚Π°ΠΊ, Π²Π°ΠΌ придСтся ΡΠΊΡ€Π°Π½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ символы $ ΠΊΠ°ΠΊ Ρ‚ΠΎΠ³ΠΎ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ цСлСвая ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° , Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ ΠΈΡ… Π±ΡƒΠΊΠ²Π°Π»ΡŒΠ½ΠΎ.

ΠŸΡ€Π΅Π΄ΠΎΡΡ‚Π΅Ρ€Π΅ΠΆΠ΅Π½ΠΈΠ΅: Π΅ΡΡ‚ΡŒ Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½ΠΎΠ΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ , ΠΎΠ΄Π½Π°ΠΊΠΎ:

ΠšΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π»ΠΎΠΌΠ°ΡŽΡ‚ΡΡ, Ссли Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° содСрТит ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹ И встроСнныС символы , нСзависимо ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ Π»ΠΈ ΠΎΠ½ΠΈ экранированы для Ρ†Π΅Π»Π΅Π²ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈΠ»ΠΈ Π½Π΅Ρ‚.

Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, Π²Ρ‹ Π±Ρ‹ ΠΈΠ·Π±Π΅Π³Π°Π»ΠΈ value-internal " as \" Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ Ρ€Π°Π·Ρ€Ρ‹Π²Π°Ρ‚ΡŒ Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½Π½ΡƒΡŽ Π² ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅:

# !! Only works if:
# !!  * $password contains NO "
# !!  * $password contains " but NOT ALSO SPACES
# !!  * $password contains PAIRS of " and what is between each
# !!    pair does not contain spaces
cmdkey.exe /add:$hostname /user:"$user" /pass:`"$($password -replace '"', '\"')`"

ЗамСчания:
* Π’Ρ‹Ρ…ΠΎΠ΄ ΠΈΠ· встроСнного " ΠΊΠ°ΠΊ \" Π½Π΅ являСтся стандартом ΠΊΠ°ΠΊ Ρ‚Π°ΠΊΠΎΠ²Ρ‹ΠΌ, Π½ΠΎ ΠΎΠ½ признаСтся Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎΠΌ Π²Π½Π΅ΡˆΠ½ΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ;СдинствСнныС Π·Π°ΠΌΠ΅Ρ‚Π½Ρ‹Π΅ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ — ΠΊΠΎΠΌΠ°Π½Π΄Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ — подробности смотритС Π² этом ΠΎΡ‚Π²Π΅Ρ‚Π΅ .
* Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, PowerShell Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ это экранированиС автоматичСски — подробности смотритС Π² этом выпускС GitHub .

Если Windows PowerShell считаСт, Ρ‡Ρ‚ΠΎ ΠΎΠ½Π° Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΉ Ρ‚ΠΎΠΊΠ΅Π½ ΠΊΠ°ΠΊ Π΅ΡΡ‚ΡŒ Π² качСствС ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° Ρ†Π΅Π»Π΅Π²ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅, ΠΎΠ½Π° слСпо примСняСт Π΄Π²ΠΎΠΉΠ½Ρ‹Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ Π²ΠΎΠΊΡ€ΡƒΠ³ всСго Ρ‚ΠΎΠΊΠ΅Π½Π° [1] , Ρ‡Ρ‚ΠΎ Π² сочСтании с экранированным символом ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ Π½Π΅Π²Π΅Ρ€Π½ΠΎΠΌΡƒ синтаксису :

НапримСр, Ссли $password Π±ΡƒΠΊΠ²Π°Π»ΡŒΠ½ΠΎ содСрТит a " b , PowerShell Π·Π°ΠΊΠ°Π½Ρ‡ΠΈΠ²Π°Π΅Ρ‚ Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ пропускаСт ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ Π·Π° кулисами, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Π²Ρ‹ΡˆΠ΅:

 ...  "/pass:"a \" b""

Π’ΠΎ Π΅ΡΡ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ Π±ΡƒΠΊΠ²Π΅Π½Π½Ρ‹ΠΉ Ρ‚ΠΎΠΊΠ΅Π½, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²ΠΈΠ΄Π΅Π» PowerShell — /pass:"a \" b" — Π±Ρ‹Π» слСпо Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ Π² Π΄Π²ΠΎΠΉΠ½Ρ‹Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ , Π² Ρ†Π΅Π»ΠΎΠΌ , Π΄Π°ΠΆΠ΅ Ссли Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ Ρ†Π΅Π»Π΅Π²Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ /pass:"a \" b" ΠΊΠ°ΠΊ -являСтся.
Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ явно прСдоставлСнная двойная ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ° становится Π½Π΅Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ (Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ для этого потрСбуСтся Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ экранирования) — ΠΈ Ссли Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ --% , символ остановки Π°Π½Π°Π»ΠΈΠ·Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π·Π°Ρ‚Π΅ΠΌ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ вас Π»ΠΈΡ‚Π΅Ρ€Π°Π»Π°ΠΌΠΈ (ΠΈΠ»ΠΈ %...% -ΡΡ‚ΠΈΠ»ΡŒΠ½Ρ‹Π΅ ссылки Π½Π° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ окруТСния), ΠΏΡƒΡ‚ΠΈ ΠΊ этому Π½Π΅Ρ‚.

Если цСлСвая ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° распознаСт Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚, Ссли ΠΎΠ½ Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ Π² Π΄Π²ΠΎΠΉΠ½Ρ‹Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ Π² Ρ†Π΅Π»ΠΎΠΌ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€,
"/pass:ab" вмСсто /pass:"ab" ), Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ явныС Π΄Π²ΠΎΠΉΠ½Ρ‹Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ Π²ΠΎΠΊΡ€ΡƒΠ³ значСния Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°.
Однако ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ†Π΅Π»Π΅Π²Ρ‹Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ cmdkey.exe , Π½Π΅ Ρ€Π°ΡΠΏΠΎΠ·Π½Π°ΡŽΡ‚ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚, Ссли ΠΎΠ½ Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ Π² Π΄Π²ΠΎΠΉΠ½Ρ‹Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ Π² Ρ†Π΅Π»ΠΎΠΌ.

... /pass:$($password -replace '"', '\"')

Π‘ $password Π±ΡƒΠΊΠ²Π°Π»ΡŒΠ½ΠΎ содСрТащим a " b , PowerShell Π·Π°Ρ‚Π΅ΠΌ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ Π·Π° кулисы:

... "/pass:a \" b"

Π­Ρ‚ΠΎ синтаксичСски допустимо — для Ρ†Π΅Π»Π΅Π²Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π°ΡΠΏΠΎΠ·Π½Π°ΡŽΡ‚ \" ΠΊΠ°ΠΊ экранированный " , Ρ‡Ρ‚ΠΎ являСтся Π½ΠΎΡ€ΠΌΠΎΠΉ — Π½ΠΎ, ΠΊΠ°ΠΊ ΡƒΠΆΠ΅ Π³ΠΎΠ²ΠΎΡ€ΠΈΠ»ΠΎΡΡŒ, Ρ‚ΠΎΡ‚ Ρ„Π°ΠΊΡ‚, Ρ‡Ρ‚ΠΎ вСсь Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ Π² «» … «, Π° Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒΡΡ Ρ†Π΅Π»Π΅Π²ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ.


[1] Windows PowerShell ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΡƒΠ΅Ρ‚ всС \ -экранированиС Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰Π΅ΠΌ Ρ‚ΠΎΠΊΠ΅Π½Π΅ ΠΈ считаСт, Ρ‡Ρ‚ΠΎ всС встроСнныС " ΠΈΠΌΠ΅ΡŽΡ‚ ΡΠΈΠ½Ρ‚Π°ΠΊΡΠΈΡ‡Π΅ΡΠΊΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ: с этой Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния, Ссли Ρ‚ΠΎΠΊΠ΅Π½ Π½Π΅ состоит ΠΈΠ· ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Π»ΠΈΠ±ΠΎ соСдинСния строк, соСдинСнных Π² ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ ΠΈ Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹Ρ… Π² Π΄Π²ΠΎΠΉΠ½Ρ‹Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Π΄Π²ΠΎΠΉΠ½Ρ‹Π΅ Π¦ΠΈΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ примСняСтся Π²ΡΠ»Π΅ΠΏΡƒΡŽ — Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°Ρ€ΡƒΡˆΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ.
Π’Π°ΠΊΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ нСясно, ΠΎΠ½ΠΎ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π½Π°Π΄Π΅ΠΆΠ½ΡƒΡŽ ΠΈ ΠΏΡ€Π΅Π΄ΡΠΊΠ°Π·ΡƒΠ΅ΠΌΡƒΡŽ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Ρƒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ².
Π―Π΄Ρ€ΠΎ PowerShell Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ распознаСт \" ΠΊΠ°ΠΊ экранированныС; ΠΎΠ΄Π½Π°ΠΊΠΎ Ρ†ΠΈΡ‚Π°Ρ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ экранированы ΠΊΠ°ΠΊ \" ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ приводят ΠΊ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΌ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°ΠΌ;Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, 'a "bc" d' пСрСдаСтся ΠΊΠ°ΠΊ "a "bc" d" , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ†Π΅Π»Π΅Π²Ρ‹Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‚ ΠΊΠ°ΠΊ 2 Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°, ab ΠΈ cd (послС удалСния ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ).

geekquestion.com

ΠšΠ°Π²Ρ‹Ρ‡ΠΊΠΈ Π² PowerShell

ΠšΠ°Π²Ρ‹Ρ‡ΠΊΠΈ Π² PowerShell

Π‘Ρ‚Ρ€ΠΎΠΊΠΎΠ²Ρ‹Π΅ значСния Π² PowerShell Π²ΡΡ‚Ρ€Π΅Ρ‡Π°ΡŽΡ‚ΡΡ довольно часто. Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, ΠΎΠ½ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌ ΠΊΠ°ΠΊ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹. Иногда строки Π·Π°ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ΡΡ Π² Π΄Π²ΠΎΠΉΠ½Ρ‹Π΅ ΠΈΠ»ΠΈ ΠΎΠ΄ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ, Π° ΠΈΠ½ΠΎΠ³Π΄Π° обходятся Π±Π΅Π· Π½ΠΈΡ…. ΠΠ΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ поставлСнныС (ΠΈΠ»ΠΈ Π½Π΅ поставлСнныС) ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΏΡ€ΠΈΡ‡ΠΈΠ½ΠΎΠΉ мноТСства ошибок Π² ΠΊΠΎΠ΄Π΅, поэтому ΠΎΡ‡Π΅Π½ΡŒ Π²Π°ΠΆΠ½ΠΎ ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»Π° Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°ΠΌΠΈ: ΠΊΠΎΠ³Π΄Π° тСкст Π½ΡƒΠΆΠ½ΠΎ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Π² ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ, ΠΊΠΎΠ³Π΄Π° Π½Π΅Ρ‚ ΠΈ ΠΊΠΎΠ³Π΄Π° ΠΊΠ°ΠΊΠΎΠΉ Ρ‚ΠΈΠΏ ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ Π»ΡƒΡ‡ΡˆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ.

Для Π½Π°Ρ‡Π°Π»Π° посмотрим, Ρ‡Ρ‚ΠΎ Π΄Π°Π΅Ρ‚ Π½Π°ΠΌ использованиС ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ. Π’ качСствС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° Π½Π°Π·Π½Π°Ρ‡ΠΈΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ $a Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 123 ΠΈ Π²Ρ‹Π²Π΅Π΄Π΅ΠΌ Π΅Π΅ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ…:

$a = 123
$a.GetType()

Π—Π°Ρ‚Π΅ΠΌ сдСлаСм Ρ‚ΠΎ ΠΆΠ΅ самоС, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π·Π°ΠΊΠ»ΡŽΡ‡ΠΈΠΌ Π² ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ:

$a = β€³123β€³
$a.GetType()

Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΌ случаС пСрСмСнная ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… Int32 (32-разрядноС число), Π° Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ String (строка).

Β 

Из ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½ΠΎ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΈΠΏ String. Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, ΠΊΠΎΠ³Π΄Π° тСкст Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ, PowerShell рассматриваСт Π΅Π³ΠΎ ΠΊΠ°ΠΊ строку.

Надо ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ PowerShell ΠΈ сам ΡƒΠΌΠ΅Π΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ…. Π’Π°ΠΊ Ссли Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ состоит ΠΈΠ· ΠΎΠ΄Π½ΠΈΡ… Ρ†ΠΈΡ„Ρ€, Ρ‚ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ опрСдСляСтся ΠΊΠ°ΠΊ числовой, Ссли ΠΆΠ΅ Π² Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΈ содСрТится хотя Π±Ρ‹ ΠΎΠ΄Π½Π° Π±ΡƒΠΊΠ²Π°, Ρ‚ΠΎ PowerShell опрСдСляСт ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΊΠ°ΠΊ строку, Π²Π½Π΅ зависимости ΠΎΡ‚ наличия\отсутствия ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ.

Π’ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π½Π΅ ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ, Ссли Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ прСдставляСт ΠΈΠ· сСбя строку Π±Π΅Π· ΠΏΡ€ΠΎΠ±Π΅Π»ΠΎΠ². Для ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° смСним Ρ‚Π΅ΠΊΡƒΡ‰ΡƒΡŽ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡŽ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ:

Set-Location C:\Windows

Π₯отя ΠΏΡƒΡ‚ΡŒ ΠΊ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ ΡƒΠΊΠ°Π·Π°Π½ Π±Π΅Π· ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ, Ρ‚Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Π° ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π°. А Π²ΠΎΡ‚ такая ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π²Ρ‹Π·ΠΎΠ²Π΅Ρ‚ ΠΎΡˆΠΈΠ±ΠΊΡƒ:

Set-Location C:\Documents and Settings

Π”Π΅Π»ΠΎ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ для ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π° ΠΏΡ€ΠΎΠ±Π΅Π» ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, поэтому ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ Π·Π° ΠΏΡ€ΠΎΠ±Π΅Π»ΠΎΠΌ слово and опрСдСляСтся ΠΊΠ°ΠΊ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° с Ρ‚Π°ΠΊΠΈΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ Ρƒ ΠΊΠΎΠΌΠ°Π½Π΄Π»Π΅Ρ‚Π° Set-Location Π½Π΅Ρ‚, гСнСрируСтся ошибка. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Ρ€Π΅ΡˆΠ°Π΅Ρ‚ΡΡ просто, достаточно ΠΏΡƒΡ‚ΡŒ Π·Π°ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π² ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ‚Π°ΠΊ:

Set-Location β€²C:\Documents and Settingsβ€²

Β 

Π‘ Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ Π±ΠΎΠ»Π΅Π΅-ΠΌΠ΅Π½Π΅Π΅ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Π»ΠΈΡΡŒ, ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ ΠΊ ΠΈΡ… Ρ‚ΠΈΠΏΠ°ΠΌ.

Π’ PowerShell ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π²Π° Ρ‚ΠΈΠΏΠ° ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ β€”Β  ΠΎΠ΄ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ ΠΈ Π΄Π²ΠΎΠΉΠ½Ρ‹Π΅. Π’ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв Π½Π΅ Π²Π°ΠΆΠ½ΠΎ, ΠΊΠ°ΠΊΠΎΠΉ Ρ‚ΠΈΠΏ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ. Для ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° возьмСм Π΄Π²Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΈ присвоим ΠΈΠΌ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π£ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ $a Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ помСстим Π² Π΄Π²ΠΎΠΉΠ½Ρ‹Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ, Π° Ρƒ $b Π² ΠΎΠ΄ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅:

$a = ″ВСкст Π² ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°Ρ…β€³
$b = ′ВСкст Π² ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°Ρ…β€²

ВывСдя содСрТимоС ΠΎΠ±ΠΎΠΈΡ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚.

Β 

Как Π²ΠΈΠ΄ΠΈΡ‚Π΅, для выдСлСния ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠ³ΠΎ тСкста, Π½Π΅ содСрТащСго ΠΊΠ°ΠΊΠΈΡ… Π»ΠΈΠ±ΠΎ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… символов ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, ΠΏΠΎΠ΄ΠΎΠΉΠ΄Π΅Ρ‚ любой Ρ‚ΠΈΠΏ ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ. Однако Π΅ΡΡ‚ΡŒ нСсколько ситуаций, ΠΊΠΎΠ³Π΄Π° Ρ‚ΠΈΠΏ ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ ΠΈΠΌΠ΅Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.

Π’ тСкстС содСрТится пСрСмСнная

Если Π² строку, Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½Π½ΡƒΡŽ Π² ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ, Π½Π°Π΄ΠΎ Π²ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, Ρ‚ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π²ΠΎΠΉΠ½Ρ‹Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ. ΠŸΡ€ΠΈ использовании ΠΎΠ΄ΠΈΠ½Π°Ρ€Π½Ρ‹Ρ… ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ всС, Ρ‡Ρ‚ΠΎ находится Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊΒ  обрабатываСтся ΠΊΠ°ΠΊ тСст, Π²Π½Π΅ зависимости ΠΎΡ‚ содСрТимого. Волько ΠΏΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ Π΄Π²ΠΎΠΉΠ½Ρ‹Ρ… ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ PowerShell ΠΈΡ‰Π΅Ρ‚ Π²Π½ΡƒΡ‚Ρ€ΠΈ тСкста Π·Π½Π°ΠΊ $ ΠΈ подставляСт вмСсто ΠΈΠΌΠ΅Π½ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. НапримСр:

$c = ′строка′
$a = β€³$c Π² ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°Ρ…β€³
$b = β€²$c Π² ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°Ρ…β€²

Если Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ вывСсти значСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… $a ΠΈ $b, Ρ‚ΠΎ Π² ΠΏΠ΅Ρ€Π²ΠΎΠΌ случаС Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π²Π΅Π΄Π΅Π½ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, Π° Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ Π΅Π΅ имя.

Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… символов

Волько Π΄Π²ΠΎΠΉΠ½Ρ‹Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ Π΄Π°ΡŽΡ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ символы Π²Π½ΡƒΡ‚Ρ€ΠΈ тСкста. Π’ тСкстС, ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½ΠΎΠΌ Π΄Π²ΠΎΠΉΠ½Ρ‹ΠΌΠΈ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°ΠΌΠΈ, PowerShell ΠΈΡ‰Π΅Ρ‚ ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ символ β€” ΠΎΠ±Ρ€Π°Ρ‚Π½ΡƒΡŽ ΠΎΠ΄ΠΈΠ½Π°Ρ€Π½ΡƒΡŽ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΡƒ (`)Β  ΠΈ выполняСт ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π·Π° Π½Π΅ΠΉ спСц. символ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅. ВывСсти список спСц. символов ΠΌΠΎΠΆΠ½ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ Get-Help about_special_characters.

Π’ качСствС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ ΠΎΡ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ тСкст, вставив Π² Π½Π΅Π³ΠΎ символ n (пСрСнос строки):

$a = β€³`n Π‘Ρ‚Ρ€ΠΎΠΊΠ° 1 `n Π‘Ρ‚Ρ€ΠΎΠΊΠ° 2 `n Π‘Ρ‚Ρ€ΠΎΠΊΠ° 3 `nβ€³
$a = β€²`n Π‘Ρ‚Ρ€ΠΎΠΊΠ° 1 `n Π‘Ρ‚Ρ€ΠΎΠΊΠ° 2 `n Π‘Ρ‚Ρ€ΠΎΠΊΠ° 3 `nβ€²

Как Π²ΠΈΠ΄ΠΈΡ‚Π΅, спСц.символы Π² Π΄Π²ΠΎΠΉΠ½Ρ‹Ρ… ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°Ρ… ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Ρ‹ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ, Π° Π² ΠΎΠ΄ΠΈΠ½Π°Ρ€Π½Ρ‹Ρ… просто Π²Ρ‹Π²Π΅Π΄Π΅Π½Ρ‹ Π½Π° экран.

ΠšΠ°Π²Ρ‹Ρ‡ΠΊΠΈ Π² ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°Ρ…

Иногда ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ тСкст Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ. Но ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ Ρ‚ΠΈΠΏ ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ Π΄Π²Π°ΠΆΠ΄Ρ‹ Π½Π΅ получится, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΡ€ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ ΠΎΡˆΠΈΠ±ΠΊΡƒ:

$a = β€²ΠšΠ°Π²Ρ‹Ρ‡ΠΊΠΈ β€²Π²Π½ΡƒΡ‚Ρ€ΠΈβ€² ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊβ€²

Π° ΠΊΠΎΠΌΠ°Π½Π΄Π»Π΅Ρ‚ Write-Output Π½Π΅ выдаст ΠΎΡˆΠΈΠ±ΠΊΡƒ, Π½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ послС ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΠΏΠ°Ρ€Ρ‹ ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ пСрСнос строки:

Write-Output β€²ΠšΠ°Π²Ρ‹Ρ‡ΠΊΠΈ β€²Π²Π½ΡƒΡ‚Ρ€ΠΈβ€² ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊβ€²

Β 

ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ, Ссли Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ Π² строкС, Ρ‚ΠΎ придСтся ΠΈΡ… ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ β€” Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒΒ Π΄Π²ΠΎΠΉΠ½Ρ‹Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΎΠ΄ΠΈΠ½Π°Ρ€Π½Ρ‹Ρ… ΠΈΠ»ΠΈ ΠΎΠ΄ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ Π²Π½ΡƒΡ‚Ρ€ΠΈ Π΄Π²ΠΎΠΉΠ½Ρ‹Ρ…:

$a = β€²ΠšΠ°Π²Ρ‹Ρ‡ΠΊΠΈ β€³Π²Π½ΡƒΡ‚Ρ€ΠΈβ€³ ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊβ€²
$b = β€³ΠšΠ°Π²Ρ‹Ρ‡ΠΊΠΈ β€²Π²Π½ΡƒΡ‚Ρ€ΠΈβ€² ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊβ€³

Β 

ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ Π½Π°Π΄ΠΎ ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ для PowerShell Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ внСшняя ΠΏΠ°Ρ€Π° ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ. НапримСр Ρ‚Π°ΠΊ ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ имя ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ:

$c = β€²Π²Π½ΡƒΡ‚Ρ€ΠΈβ€²
$a = β€²ΠšΠ°Π²Ρ‹Ρ‡ΠΊΠΈ β€³$cβ€³ ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊβ€²

Π° Π²ΠΎΡ‚ Ρ‚Π°ΠΊ Π΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅:

$a = β€³ΠšΠ°Π²Ρ‹Ρ‡ΠΊΠΈ β€²$cβ€² ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊβ€³

Β 

И Π΅Ρ‰Π΅, говоря ΠΎ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°Ρ…, стоит ΡƒΠΏΠΎΠΌΡΠ½ΡƒΡ‚ΡŒ ΠΎ Ρ‚Π°ΠΊΠΎΠΉ Π²Π΅Ρ‰ΠΈ ΠΊΠ°ΠΊ экранированиС. Π‘ΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ символ (ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°, Π·Π½Π°ΠΊ $ ΠΈ ΠΏΡ€.), ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π·Π° ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΉ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΎΠΉ (`), экранируСтся β€” воспринимаСтся Π½Π΅ ΠΊΠ°ΠΊ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ, Π° ΠΊΠ°ΠΊ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ строковый символ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΏΡ€ΠΈ использовании ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΡŽΡŽ ΠΏΠ°Ρ€Ρƒ ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΡ€Π°Π½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ:

$a = β€³ΠšΠ°Π²Ρ‹Ρ‡ΠΊΠΈ `β€³Π²Π½ΡƒΡ‚Ρ€ΠΈ`β€³ ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊβ€³

Π’ΠΎΠ³Π΄Π° ΠΎΠ½ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹Π²Π΅Π΄Π΅Π½Ρ‹ ΠΊΠ°ΠΊ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ тСкст.

Β 

Π­ΠΊΡ€Π°Π½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с Π΄Π²ΠΎΠΉΠ½Ρ‹ΠΌΠΈ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°ΠΌΠΈ. ΠŸΡ€ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ΅ ΡΠΊΡ€Π°Π½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ символы Π² строкС, Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹Π΅ Π² ΠΎΠ΄ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ, ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ символ Π½ΠΈΠΊΠ°ΠΊ Π½Π΅ повлияСт Π½Π° исходныС Π΄Π°Π½Π½Ρ‹Π΅.

webhamster.ru

Ѐункция для экранирования символов Π² путях

Π•ΡΡ‚ΡŒ Π»ΠΈ Π² PowerShell функция для экранирования символов Π² путях?

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: я знаю, Ρ‡Ρ‚ΠΎ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π»Π΅Ρ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ PathΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€, Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ LiteralPathΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ€Π΅ΡˆΠ°Π΅Ρ‚ эту ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ. Π­Ρ‚ΠΎΡ‚ вопрос скорСС ΠΈΠ· Π»ΡŽΠ±ΠΎΠΏΡ‹Ρ‚ΡΡ‚Π²Π°, Ρ‡Π΅ΠΌ ΠΈΠ·-Π·Π° нСобходимости, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… я ΠΌΠΎΠ³Ρƒ ΠΏΠΎΠ΄ΡƒΠΌΠ°Ρ‚ΡŒ, ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π½Π° LiteralPathΠΈΠΌΠ΅Π΅Ρ‚ смысл. Однако ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ΄Π»ΠΈΠ½Π½Ρ‹Π΅ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ использования (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Start-BitsTransferΠΈΠΌΠ΅Π΅Ρ‚ SourceΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€, Π½ΠΎ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ Π±ΡƒΠΊΠ²Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ эквивалСнта).

ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΡΡ‚ΡŒ

Если Ρƒ мСня Π΅ΡΡ‚ΡŒ Ρ„Π°ΠΉΠ» c:\temp\test[0123].txt, вмСсто этого Get-Item 'c:\temp\test[0123].txt'я Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Π» Π±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ, Get-Item 'c:\temp\test`[0123`].txt'Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ (ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ LiteralPathΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€).

Π”Π°ΠΆΠ΅ ΠΏΡƒΡ‚ΡŒ, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π΅Π½Π½Ρ‹ΠΉ Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ PowerShell, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π½Π΅ΡΠΊΡ€Π°Π½ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ строку; Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Get-ChildItem 'c:\temp\' -Filter 'test*.txt' | Convert-Path | Get-ItemΠ½Π΅ удаСтся (ΠΏΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: Ссли ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΄ΠΈΠΌ фактичСский FileSystemInfoΠΎΠ±ΡŠΠ΅ΠΊΡ‚, всС Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, Π½ΠΎ этот ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ свойств с ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ экранированным ΠΏΡƒΡ‚Π΅ΠΌ строки).

ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π»Π΅Π³ΠΊΠΎ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ этого, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄:

$path = 'c:\temp\test[0123].txt'
$path = $path -replace '([][[])', '`$1' # escape square brackets by adding back ticks
Get-Item $path

Однако ΠΏΡ€ΠΈ экранировании строк стандартным совСтом являСтся ΠΈΠ·Π±Π΅Π³Π°Ρ‚ΡŒ примСнСния собствСнного Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ / ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ языковыС Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ этих ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ.

БущСствуСт Π»ΠΈ какая-Π»ΠΈΠ±ΠΎ Ρ€Π°Π½Π΅Π΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π°Ρ функция Π² PowerShell для этой Ρ†Π΅Π»ΠΈ ΠΈΠ»ΠΈ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌΡ‹ΠΉ способ достиТСния этой Ρ†Π΅Π»ΠΈ; ΠΈΠ»ΠΈ это СдинствСнная Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠ΄Π΅Π»Π°Π½Π½ΡƒΡŽ Π½Π° Π·Π°ΠΊΠ°Π· Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π½ΠΈΠΆΠ΅)?

function ConvertFrom-LiteralPath {
    [CmdletBinding()]
    param (
        [Parameter(Mandatory = $true, ValueFromPipeline = $true)]
        [string]$LiteralPath
    )
    process {
        (New-Object -TypeName 'PSObject' -Property @{
            LiteralPath = $LiteralPath
            Path = $LiteralPath -replace '([][[\*\?])', '`$1' # escapes ], [, *, and ?
        })
    }
}

Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ ΠΎ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… пСрсонаТах:

Автор: JohnLBevan Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ Π Π°Π·ΠΌΠ΅Ρ‰Ρ‘Π½: 04.09.2017 12:29

issue.life

ΠšΠ°Π²Ρ‹Ρ‡ΠΊΠΈ ΠΈ экранированиС Π² PowerShell

ИспользованиС ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ Π² PowerShell

ΠšΠ°Π²Ρ‹Ρ‡ΠΊΠΈ Π±Ρ‹Π²Π°ΡŽΡ‚:

  • Π”Π²ΠΎΠΉΠ½Ρ‹Π΅ ( » ) — ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ символы ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΠΏΠΎ-ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ
  • ΠžΠ΄ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ ( ‘ ) — ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ символы Π½Π΅ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΠΏΠΎ-ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ
  • ΠžΠ±Ρ€Π°Ρ‚Π½Π°Ρ ( ` ) — символ экранирования Π² PowerShell (Π°Π½Π°Π»ΠΎΠ³ символу \ ΠΈΠ· Posix-систСм)

Рассмотрим Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ использования ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ:

Clear-Host

Write-Host '1)'
Write-Host "String text"
Write-Host 'String text'

$var = 1057 # объявим ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ ΠΈ занСсСм Π² Π½Π΅Π΅ числовоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Ρ€Π°Π²Π½ΠΎΠ΅ 1057
''
Write-Host '2)'
Write-Host "$var" # Π² Π΄Π²ΠΎΠΉΠ½Ρ‹Ρ… ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°Ρ… символ $ интСрпрСтируСтся ΠΊΠ°ΠΊ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ
Write-Host '$var' # Π² ΠΎΠ΄ΠΈΠ½Π°Ρ€Π½Ρ‹Ρ… ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°Ρ… символ $ интСрпрСтируСтся ΠΊΠ°ΠΊ тСкст
''
Write-Host '3)'
Write-Host '"$var"' # Π΄Π²ΠΎΠΉΠ½Ρ‹Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΎΠ΄ΠΈΠ½Π°Ρ€Π½Ρ‹Ρ… ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ тСкст
Write-Host "'$var'" # Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΠΈ ΠΎΠ΄ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ Π²Π½ΡƒΡ‚Ρ€ΠΈ Π΄Π²ΠΎΠΉΠ½Ρ‹Ρ…
''
Write-Host '4)'
Write-Host 'somestring ''quotes into quotes''' # Ссли Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΎΠ΄ΠΈΠ½Π°Ρ€Π½Ρ‹Ρ… ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ, ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ ΠΊΠ°ΠΊ тСкст, ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ двумя подряд символами ΠΎΠ΄ΠΈΠ½Π°Ρ€Π½Ρ‹Ρ… ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ
Write-Host "somestring ""quotes into quotes""" # ΠΏΠΎ Π°Π½Π°Π»ΠΎΠ³ΠΈΠΈ ΠΈ с Π΄Π²ΠΎΠΉΠ½Ρ‹ΠΌΠΈ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°ΠΌΠΈ
''
Write-Host '5)'
Write-Host "somestring `"quotes into quotes`"" # обратная ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ° экранировала Π΄Π²ΠΎΠΉΠ½ΡƒΡŽ. Π’Π°ΠΊΠΎΠΉ способ Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с ΠΎΠ΄ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΌΠΈ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°ΠΌΠΈ
Write-Host "`$var = $var" # с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΉ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ ΠΌΡ‹ экранировали ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ символ $
''
Write-Host '6)'
Get-Process -Name svchost `
                            | Sort-Object -Property id `
                            | Select-Object -First 3 `
                            | Format-Table -Property id,name -AutoSize -Wrap # Ρ‚Π°ΠΊΠΆΠ΅, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΉ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ, ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π·Π±ΠΈΠ²Π°Ρ‚ΡŒ однострочный ΠΊΠΎΠΌΠ°Π½Π΄Π»Π΅Ρ‚ Π½Π° нСсколько строк для удобства чтСния ΠΊΠΎΠ΄Π°. По сути, Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, экранируСтся символ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π° Π½Π° Π½ΠΎΠ²ΡƒΡŽ строку
Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρ‹ скрипта:
1)
String text
String text

2)
1057
$var

3)
"$var"
'1057'

4)
somestring 'quotes into quotes'
somestring "quotes into quotes"

5)
somestring "quotes into quotes"
$var = 1057

6)

  Id Name   
  -- ----   
 920 svchost
1256 svchost
1328 svchost

vam.in.ua

Как ΠΌΠ½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с ΠΏΡ€ΠΎΠ±Π΅Π»ΠΎΠΌ ΠΏΡ€ΠΈ экранировании символа Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ Π² Power-Shell

PowerShell ΠΈΠΌΠ΅Π΅Ρ‚ ΡΠΊΡ€Ρ‹Ρ‚ΡƒΡŽ Π»ΠΎΠ³ΠΈΠΊΡƒ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ³ΠΎ цитирования, ΠΊΠΎΠ³Π΄Π° Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ внСшним ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π°ΠΌ .

Π’ΠΎ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π²ΠΈΠ΄ΠΈΡ‚Π΅, это ошибка Π² Windows PowerShell (которая с Ρ‚Π΅Ρ… ΠΏΠΎΡ€ Π±Ρ‹Π»Π° исправлСна ​​в PowerShell Core ):

ΠšΠΎΡ€ΠΎΡ‡Π΅ говоря, "cn=\`"Jim Carter\`""пСрСдаСтся Π²Π½Π΅ΡˆΠ½Π΅ΠΌΡƒ исполняСмому Ρ„Π°ΠΉΠ»Ρƒ as cn=\"Jim Beam\", ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½ΠΎ прСвращаСтся Π² Π΄Π²Π° Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° — ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ Π½Π΅ Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ Π² Π΄Π²ΠΎΠΉΠ½Ρ‹Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ Π² Ρ†Π΅Π»ΠΎΠΌ , Π΄Π°ΠΆΠ΅ Ссли это Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ.

ΠΎΠ±Ρ…ΠΎΠ΄Π½Ρ‹Π΅:

Как Ρ‡Π°ΡΡ‚ΡŒ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΈΠΌΠ΅Π½ΠΈ Π² Active Directory, значСния ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Jim Beamдля ΠΏΠΎΠ»Π΅ΠΉ cn) ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π½Π΅ Π½ΡƒΠΆΠ΄Π°ΡŽΡ‚ΡΡ Π² Π΄Π²ΠΎΠΉΠ½Ρ‹Ρ… ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°Ρ…, Π΄Π°ΠΆΠ΅ Ссли ΠΎΠ½ΠΈ содСрТат ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ (Π² зависимости ΠΎΡ‚ повСдСния исполняСмого Ρ„Π°ΠΉΠ»Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚Π΅).

someExternalTool.exe "cn=Jim Beam"

Если Π²Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ исполняСмый Ρ„Π°ΠΉΠ» , Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π² ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΌ ΠΈΡ‚ΠΎΠ³Π΅ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ строковый Π»ΠΈΡ‚Π΅Ρ€Π°Π» cn=\"Jim Beam\", Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ --%, Π² символ остановки Ρ€Π°Π·Π±ΠΎΡ€Π° :

someExternalTool.exe --% "cn=\\\"Jim Beam\\\""

Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ исполняСмый Ρ„Π°ΠΉΠ» просто Π²ΠΈΠ΄Π΅Π» cn="Jim Beam", Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ с "символами. Π½Π΅ сбСТал, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅someExternalTool.exe --% "cn=\"Jim Beam\""

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ использованиС --%Π·Π°Ρ‚Π΅ΠΌ ΠΈΡΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ использованиС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… PowerShell ΠΊΠ°ΠΊ части Ρ‚ΠΎΠΉ ΠΆΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹.


Π’ PowerShell Core , ваш исходный Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚, "cn=\`"Jim Carter\`""ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ цСлСвая ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΡƒΠ²ΠΈΠ΄ΠΈΡ‚ Π±ΡƒΠΊΠ²Π°Π»ΡŒΠ½Ρ‹ΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ cn="Jim Beam", поэтому ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° с Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½Ρ‹ΠΌ Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Π½Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ½Π΅Ρ‚; ΠΎΠ΄Π½Π°ΠΊΠΎ Ссли Π²Π°ΠΌ Π½ΡƒΠΆΠ½Π° цСлСвая ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° для просмотра cn=\"Jim Beam\", Π²Π°ΠΌ придСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ "cn=\\\`"Jim Beam\\\`""— ΠΈΠ»ΠΈ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΎΠ΄ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ, 'cn=\\\"Jim Beam\\\"'


Как Π² сторонС: Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ явно- \ ESCEPS "символов. для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ ΠΈΡ… внСшним ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌ, это само ΠΏΠΎ сСбС Π΄ΠΎΠ»ΠΆΠ½ΠΎ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ ошибка , Π½ΠΎ это давняя ошибка , которая, вСроятно, Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ исправлСна ​​из-Π·Π° ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΉ совмСстимости: см. эту ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ GitHub .

Автор: mklement0 Π Π°Π·ΠΌΠ΅Ρ‰Ρ‘Π½: 01.04.2019 01:07

issue.life

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *