Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Назначение: Windows PowerShell 2.0, Windows PowerShell 3.0
РАЗДЕЛ
about_Parsing
КРАТКОЕ ОПИСАНИЕ
Описание анализа команд в Windows PowerShell.
ПОДРОБНОЕ ОПИСАНИЕ
Когда вы вводите команду в командной строке, Windows PowerShell разбивает текст команды на ряд сегментов, называемых лексемами, а затем определяет способ интерпретации каждой лексемы.
Например, если ввести:
Write-Host book
Windows PowerShell разбивает следующую команду на две лексемы («Write-Host» и «book») и интерпретирует каждую лексему независимо друг от друга.
При обработке команды средство анализа Windows PowerShell работает в режиме выражения или в режиме аргумента.
– В режиме выражения значения строк символов следует заключить в кавычки. Числа, не заключенные в кавычки, рассматриваются как числовые значения (а не как последовательность символов).
– В режиме аргумента каждое значение рассматривается как расширяемая строка, если оно не начинается со следующих специальных символов: символ доллара ($), символ @, одинарная кавычка ('), двойная кавычка (") или открывающая скобка (().
Если перед значением стоит один из этих символов, оно рассматривается как выражение значения.
Ниже приведено несколько примеров команд, обработанных в режиме выражения и режиме аргумента, и результаты выполнения этих команд.
Example Mode Result
------------------ ---------- ----------------
2+2 Expression 4 (integer)
Write-Output 2+2 Argument "2+2" (string)
Write-Output (2+2) Expression 4 (integer)
$a = 2+2 Expression $a = 4 (integer)
Write-Output $a Expression 4 (integer)
Write-Output $a/H Argument "4/H" (string)
Каждую лексему можно интерпретировать как некий тип объекта, например логический или строковый. Windows PowerShell пытается определить тип объекта из выражения. Тип объекта зависит от типа параметра, ожидаемого командой, и от того, знает ли Windows PowerShell, как преобразовать аргумент в требуемый тип. Ниже приведено несколько примеров типов, которые назначаются значениям, возвращаемым выражениями.
Example Mode Result
------------------ ---------- ---------------
Write-Output !1 argument "!1" (string)
Write-Output (!1) expression False (Boolean)
Write-Output (2) expression 2 (integer)
ОСТАНОВКА АНАЛИЗА: --%
Символ остановки анализа (--%), впервые представленный в Windows PowerShell 3.0, указывает Windows PowerShell не интерпретировать входные данные как команды или выражения Windows PowerShell.
При вызове исполняемой программы в Windows PowerShell поместите символ остановки анализа перед аргументами программы. Этот прием гораздо проще использования escape-символов для предотвращения неправильной интерпретации.
При обнаружении символа остановки анализа Windows PowerShell рассматривает остальные символы в строке как литеральные. Единственной выполняемой интерпретацией является замена значений для переменных среды, которые используют стандартную нотацию Windows, например %USERPROFILE%.
Символ остановки анализа действует только до следующего символа новой строки или конвейера. Нельзя использовать символ продолжения (') для расширения его действия или разделитель команд (;) для остановки его действия.
Например, следующая команда вызывает программу Icacls.
icacls X:\VMS /grant Dom\HVAdmin:(CI)(OI)F
Для выполнения этой команды в Windows PowerShell 2.0 необходимо использовать escape-символы, чтобы предотвратить неправильную интерпретацию скобок.
icacls X:\VMS /grant Dom\HVAdmin:`(CI`)`(OI`)F
Символ остановки анализа можно использовать, начиная с Windows PowerShell 3.0.
icacls X:\VMS --% /grant Dom\HVAdmin:(CI)(OI)F
Windows PowerShell отправляет следующую строку команды в программу Icacls:
X:\VMS /grant Dom\HVAdmin:(CI)(OI)F
СМ. ТАКЖЕ
about_Command_Syntax