Поделиться через


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, добавьте к параметрам команды дефис (-), а не косую черту (/).