about_Pwsh
Краткое описание
Объясняет, как использовать pwsh
интерфейс ine команды-l. Отображает параметры ine команды-lи описывает синтаксис.
Подробное описание
Сведения о параметрах ine команды-lдля Windows PowerShell 5.1 см. в разделе about_PowerShell_exe.
Синтаксис
Usage: pwsh[.exe]
[-Login]
[[-File] <filePath> [args]]
[-Command { - | <script-block> [-args <arg-array>]
| <string> [<CommandParameters>] } ]
[-ConfigurationFile <filePath>]
[-ConfigurationName <string>]
[-CustomPipeName <string>]
[-EncodedCommand <Base64EncodedCommand>]
[-ExecutionPolicy <ExecutionPolicy>]
[-InputFormat {Text | XML}]
[-Interactive]
[-MTA]
[-NoExit]
[-NoLogo]
[-NonInteractive]
[-NoProfile]
[-NoProfileLoadTime]
[-OutputFormat {Text | XML}]
[-SettingsFile <filePath>]
[-SSHServerMode]
[-STA]
[-Version]
[-WindowStyle <style>]
[-WorkingDirectory <directoryPath>]
pwsh[.exe] -h | -Help | -? | /?
Параметры
Все параметры не учитывают регистр-in.
-File | -f
Если значение File
равно -
, текст команды считывается из стандартных входных данных.
Выполнение pwsh -File -
без перенаправленных стандартных входных данных запускает обычный сеанс. Это то же самое, что вообще не указывать File
параметр.
Это параметр по умолчанию, если параметры отсутствуют, но значения присутствуют в командной строке. Указанный скрипт выполняется в локальной область (с точкой) нового сеанса, чтобы функции и переменные, создаваемые скриптом, были доступны в новом сеансе. Введите путь к файлу скрипта и все параметры. Файл должен быть последним параметром в команде, так как все символы, введенные после имени параметра File, интерпретируются как путь к файлу скрипта, за которым следуют параметры скрипта.
Обычно параметры-переключатели сценария включаются или опускаются.
Например, следующая команда использует параметр All файла скрипта Get-Script.ps1: -File .\Get-Script.ps1 -All
В редких случаях может потребоваться указать логическое значение для параметра switch. Чтобы предоставить логическое значение для параметра switch в значении параметра File , используйте параметр , за которым следует двоеточие и логическое значение, например: -File .\Get-Script.ps1 -All:$False
.
Передаваемые в скрипт параметры имеют вид строк литералов (после интерпретации текущей оболочкой). Например, если вы находитесь в cmd.exe
и хотите передать значение переменной среды, используйте cmd.exe
синтаксис: pwsh -File .\test.ps1 -TestParam %windir%
В отличие от этого, выполнение pwsh -File .\test.ps1 -TestParam $env:windir
в cmd.exe
приводит к тому, что скрипт получает литеральную строку $env:windir
, так как она не имеет особого значения для текущей cmd.exe
оболочки. Стиль $env:windir
ссылки на переменную среды можно использовать внутри параметра Command , так как он интерпретируется как код PowerShell.
Аналогичным образом, если вы хотите выполнить ту же команду из скрипта пакетной службы, используйте %~dp0
вместо .\
или $PSScriptRoot
для представления текущего каталога выполнения: pwsh -File %~dp0test.ps1 -TestParam %windir%
. Если вместо этого вы использовали .\test.ps1
, PowerShell вызовет ошибку, так как ему не удается найти путь к литералам. .\test.ps1
Примечание
Параметр File не поддерживает скрипты, использующие параметр , который ожидает массив значений аргументов. Это, к сожалению, является ограничением того, как собственная команда получает значения аргументов. При вызове собственного исполняемого файла (например, powershell
или pwsh
) он не знает, что делать с массивом, поэтому он передается в виде строки.
Когда файл скрипта завершается командой exit
, в коде завершения процесса устанавливается числовой аргумент, используемый с командой exit
. При обычном завершении код выхода всегда 0
имеет значение .
Дополнительные сведения см $LASTEXITCODE
. в разделе about_Automatic_Variables.
Как и при -Command
возникновении неустранимой ошибки скрипта, код выхода имеет значение 1
. Однако, в отличие от -Command
, если выполнение прерывается с помощью клавиш CTRL+C , код выхода имеет значение 0
.
Примечание
В PowerShell 7.2 параметр File принимает .ps1
только файлы в Windows. Если указан другой тип файла, возникает ошибка. Это поведение зависит от Windows. На других платформах PowerShell пытается запустить файлы других типов.
-Command | -c
Выполняет указанные команды (и все параметры), как если бы они были вводимы в командной строке PowerShell, а затем завершает работу, если NoExit
не указан параметр .
Значение Command может быть -
, блок скрипта или строка. Если параметр Command имеет -
значение , текст команды считывается из стандартных входных данных.
Параметр Command принимает блок скрипта для выполнения, только если он может распознать значение, переданное в Command как тип ScriptBlock . Это возможно только при запуске pwsh
с другого узла PowerShell. Тип ScriptBlock может содержаться в существующей переменной, возвращаться из выражения или анализироваться узлом PowerShell как литеральный блок скрипта, заключенный в фигурные скобки ({}
), перед передачей в pwsh
.
pwsh -Command {Get-WinEvent -LogName security}
В cmd.exe
не существует такого понятия, как блок скрипта (или тип ScriptBlock ), поэтому значение, передаваемое команде,всегда является строкой. Вы можете написать блок скрипта внутри строки, но вместо выполнения он ведет себя точно так же, как если бы вы ввели его в типичной командной строке PowerShell, распечатав содержимое блока скрипта.
Строка, передаваемая команде, по-прежнему выполняется в виде кода PowerShell, поэтому фигурные скобки блока скрипта часто не требуются в первую очередь при запуске из cmd.exe
. Чтобы выполнить встроенный блок скрипта, определенный внутри строки, можно использовать оператор&
вызова:
pwsh -Command "& {Get-WinEvent -LogName security}"
Если значение Command является строкой, command должен быть последним параметром для pwsh, так как все аргументы, следующие за ней, интерпретируются как часть выполняемой команды.
При вызове из существующего сеанса PowerShell результаты возвращаются в родительскую оболочку как десериализованные xml-объекты, а не динамические объекты. Для других оболочек результаты возвращаются в виде строк.
Если параметр Command имеет -
значение , текст команды считывается из стандартных входных данных. При использовании параметра Command со стандартными входными данными необходимо перенаправить стандартные входные данные. Пример:
@'
"in"
"hi" |
% { "$_ there" }
"out"
'@ | powershell -NoProfile -Command -
В этом примере выводятся следующие данные:
in
hi there
out
Код завершения процесса определяется состоянием последней (выполненной) команды в блоке скрипта. Код выхода имеет значение , 0
если $?
имеет значение $true
или 1
когда $?
имеет значение $false
. Если последняя команда является внешней программой или скриптом PowerShell, который явно задает код выхода, отличный от 0
или 1
, этот код выхода преобразуется в 1
для кода выхода процесса. Чтобы сохранить определенный код выхода, добавьте exit $LASTEXITCODE
в командную строку или блок скрипта.
Дополнительные сведения см $LASTEXITCODE
. в разделе about_Automatic_Variables.
Аналогичным образом, значение 1 возвращается при возникновении устранимой (устранимой) ошибкой скрипта, такой как throw
или -ErrorAction Stop
, или при прерывании выполнения с помощью клавиш CTRL+C.
-ConfigurationName | -config
Указывает конечную точку конфигурации, в которой выполняется PowerShell. Это может быть любая конечная точка, зарегистрированная на локальном компьютере, включая конечные точки удаленного взаимодействия PowerShell по умолчанию или пользовательскую конечную точку с определенными возможностями роли пользователя.
Пример: pwsh -ConfigurationName AdminRoles
-ConfigurationFile
Указывает путь к файлу конфигурации сеанса (.pssc
). Конфигурация, содержащаяся в файле конфигурации, будет применена к сеансу PowerShell.
Пример: pwsh -ConfigurationFile "C:\ProgramData\PowerShell\MyConfig.pssc"
-CustomPipeName
Указывает имя, используемое для дополнительного IPC-сервера (именованного канала), используемого для отладки и других межпроцессных взаимодействий. Это обеспечивает предсказуемый механизм подключения к другим экземплярам PowerShell. Обычно используется с параметром CustomPipeName в Enter-PSHostProcess
.
Этот параметр появился в PowerShell 6.2.
Пример:
# PowerShell instance 1
pwsh -CustomPipeName mydebugpipe
# PowerShell instance 2
Enter-PSHostProcess -CustomPipeName mydebugpipe
-EncodedCommand | -e | -ec
Принимает версию строки в кодировке Base64-encoded команды. Используйте этот параметр для отправки команд в PowerShell, требующих сложного вложенного кавыка. Представление Base64 должно быть строкой в кодировке UTF-16LE.
Пример:
$command = 'dir "c:\program files" '
$bytes = [System.Text.Encoding]::Unicode.GetBytes($command)
$encodedCommand = [Convert]::ToBase64String($bytes)
pwsh -encodedcommand $encodedCommand
-ExecutionPolicy | -ex | -ep
Задает политику выполнения по умолчанию для текущего сеанса и сохраняет ее в переменной $env:PSExecutionPolicyPreference
среды. Этот параметр не изменяет постоянно настроенные политики выполнения.
Этот параметр применяется только к компьютерам Windows. На платформах, отличных от Windows, параметр и указанное значение игнорируются.
-InputFormat | -inp | -if
Описывает формат данных, отправляемых в PowerShell. Допустимые значения: "Text" (текстовые строки) или "XML" (сериализованный формат CLIXML).
-Interactive | -i
Представить пользователю интерактивный запрос. Обратная для параметра NonInteractive.
-Login | -l
В Linux и macOS запускает PowerShell как оболочку для входа, используя /bin/sh для выполнения профилей входа, таких как /etc/profile и ~/.profile. В Windows этот переключатель не выполняет никаких действий.
Важно!
Этот параметр должен быть первым, чтобы запустить PowerShell в качестве оболочки входа. Этот параметр игнорируется, если он передается в другую позицию.
Чтобы настроить в pwsh
качестве оболочки входа в операционных системах UNIX-like, выполните следующие действия.
Убедитесь, что полный абсолютный путь к
pwsh
указан в разделе/etc/shells
- Обычно этот путь похож
/usr/bin/pwsh
на Linux или/usr/local/bin/pwsh
macOS. - При использовании некоторых методов установки эта запись будет добавлена автоматически во время установки.
- Если
pwsh
отсутствует в/etc/shells
, используйте редактор, чтобы добавить путь кpwsh
в последней строке. Для этого требуются повышенные привилегии для редактирования.
- Обычно этот путь похож
Используйте служебную программу chsh , чтобы задать для оболочки текущего пользователя значение
pwsh
:chsh -s /usr/bin/pwsh
Предупреждение
Установка pwsh
в качестве оболочки входа в настоящее время не поддерживается в подсистема Windows для Linux (WSL), и попытка задать pwsh
ее в качестве оболочки входа может привести к невозможности запуска WSL в интерактивном режиме.
-MTA
Запустите PowerShell с помощью многопотокового подразделения. Этот параметр доступен только в Windows. Использование этого параметра на платформах, отличных от Windows, приводит к ошибке.
-NoExit | -noe
Не завершает работу после выполнения команд запуска.
Пример: pwsh -NoExit -Command Get-Date
-NoLogo | -nol
Скрывает баннер при запуске интерактивных сеансов.
-NonInteractive | -noni
Этот параметр используется для создания сеансов, которые не должны требовать ввода данных пользователем. Это полезно для сценариев, которые выполняются в запланированных задачах или конвейерах CI/CD. Любые попытки использовать интерактивные функции, такие как Read-Host
или запросы подтверждения, приводят к прекращению ошибок инструкции, а не зависаю.
-NoProfile | -nop
Не загружает профили PowerShell.
-NoProfileLoadTime
Скрывает текст времени загрузки профиля PowerShell, отображаемый при запуске, когда время загрузки превышает 500 миллисекунда.
-OutputFormat | -o | -of
Определяет формат выходных данных PowerShell. Допустимые значения: "Text" (текстовые строки) или "XML" (сериализованный формат CLIXML).
Пример: pwsh -o XML -c Get-Date
При вызове в сеансе PowerShell вы получаете десериализованные объекты в виде выходных, а не простых строк. При вызове из других оболочек выходными данными являются строковые данные, отформатированные в виде текста CLIXML.
-SettingsFile | -settings
Переопределяет файл параметров ide powershell.config.json
системы-wдля сеанса. По умолчанию параметры IDE системы-wсчитываются из powershell.config.json
в каталоге $PSHOME
.
Обратите внимание, что эти параметры не используются конечной точкой, указанной аргументом -ConfigurationName
.
Пример: pwsh -SettingsFile c:\myproject\powershell.config.json
-SSHServerMode | -sshs
Используется в sshd_config для запуска PowerShell в качестве подсистемы SSH. Он не предназначен и не поддерживается для любого другого использования.
-STA
Запустите PowerShell с помощью однопотокового подразделения. Это значение по умолчанию. Этот параметр доступен только на платформе Windows. Использование этого параметра на платформах, отличных от Windows, приводит к ошибке.
-Version | -v
Отображает версию PowerShell. Дополнительные параметры игнорируются.
-WindowStyle | -w
Задает стиль окна для сеанса. Допустимые значения: Normal, Minimized, Maximized и Hidden. Этот параметр применяется только к Windows. Использование этого параметра на платформах, отличных от Windows, приводит к ошибке.
-WorkingDirectory | -wd | -wO
Задает начальный рабочий каталог, выполняя при запуске. Поддерживается любой допустимый путь к файлу PowerShell.
Чтобы запустить PowerShell в домашнем каталоге, используйте: pwsh -WorkingDirectory ~
-Help, -?, /?
Отображает справку по pwsh
. Если вы вводите команду pwsh в PowerShell, добавьте к параметрам команды дефис (-
), а не косую черту (/
).