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


about_Pwsh

Краткое описание

Объясняет, как использовать команду pwsh-lинтерфейсе ine. Отображает команду-lпараметров ine и описывает синтаксис.

Длинное описание

Синтаксис

pwsh[.exe]
   [[-File] <filePath> [args]]
   [-Command { - | <script-block> [-args <arg-array>]
                 | <string> [<CommandParameters>] } ]
   [-ConfigurationName <string>]
   [-CustomPipeName <string>]
   [-EncodedCommand <Base64EncodedCommand>]
   [-ExecutionPolicy <ExecutionPolicy>]
   [-InputFormat {Text | XML}]
   [-Interactive]
   [-Login]
   [-MTA]
   [-NoExit]
   [-NoLogo]
   [-NonInteractive]
   [-NoProfile]
   [-OutputFormat {Text | XML}]
   [-SettingsFile <SettingsFilePath>]
   [-SSHServerMode]
   [-STA]
   [-Version]
   [-WindowStyle <style>]
   [-WorkingDirectory <directoryPath>]

pwsh[.exe] -h | -Help | -? | /?

Параметры

Все параметры являются регистром-insensitive.

-File | -f

Если значение File-, текст команды считывается из стандартных входных данных. Запуск pwsh -File - без перенаправленных стандартных входных данных запускает обычный сеанс. Это то же самое, что и не указание параметра File вообще.

Это параметр по умолчанию, если параметры отсутствуют, но значения присутствуют в командной строке. Указанный скрипт выполняется в локальной области ("dot-sourced"), чтобы функции и переменные, создаваемые скриптом, были доступны в текущем сеансе. Введите путь к файлу скрипта и все параметры. Файл должен быть последним параметром команды, так как все символы, введенные после имени параметра файла, интерпретируются как путь к файлу скрипта, а затем параметры скрипта.

Как правило, параметры коммутатора скрипта включаются или опущены. Например, следующая команда использует параметр All файла скрипта Get-Script.ps1: -File .\Get-Script.ps1 -All

В редких случаях может потребоваться указать логическое значение для параметра switch. Чтобы указать логическое значение для параметра switch в значении параметра file, используйте параметр, который обычно следует двоеточию и логическое значение, например следующее: .

Параметры, передаваемые скрипту, передаются в виде литеральных строк после интерпретации текущей оболочкой. Например, если вы находитесь в 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

Когда файл скрипта завершается командой exit, код выхода процесса задается числовым аргументом, используемым с командой exit. При обычном завершении код выхода всегда 0.

Аналогично -Command, если возникает ошибка завершения скрипта, код выхода имеет значение 1. Однако в отличие от -Command, если выполнение прерывается с помощью клавиш CTRL -C кода выхода 0.

-Command | -c

Выполняет указанные команды (и все параметры), как будто они были вводимы в командной строке PowerShell, а затем завершает работу, если параметр NoExit не указан.

Значение команды может быть -, блоком скрипта или строкой. Если значение команды -, текст команды считывается из стандартных входных данных.

Параметр команды принимает блок скрипта только для выполнения, если он может распознать значение, переданное команде в качестве типа ScriptBlock. Это только при запуске pwsh из другого узла PowerShell. Тип ScriptBlock может содержаться в существующей переменной, возвращаемой из выражения или анализируемой узлом PowerShell в виде блока литерального скрипта, заключенного в фигурные скобки ({}), перед передачей в pwsh.

pwsh -Command {Get-WinEvent -LogName security}

В отсутствует такая вещь, как блок скрипта (или тип ScriptBlock), поэтому значение, переданное в командную , всегда быть строкой. Вы можете написать блок скрипта внутри строки, но вместо выполнения он будет вести себя точно так же, как если бы вы ввели его в типичном запросе PowerShell, распечатав содержимое блока скрипта обратно.

Строка, передаваемая command, по-прежнему выполняется как код PowerShell, поэтому блок скрипта фигурные скобки часто не требуются в первую очередь при запуске из cmd.exe. Чтобы выполнить встроенный блок скрипта, определенный внутри строки, можно использовать оператор вызова &:

pwsh -Command "& {Get-WinEvent -LogName security}"

Если значение Command является строкой, command должен быть последним параметром pwsh, так как все аргументы, приведенные ниже, интерпретируются как часть команды для выполнения.

При вызове из существующего сеанса PowerShell результаты возвращаются в родительскую оболочку как десериализированные XML-объекты, а не динамические объекты. Для других оболочки результаты возвращаются в виде строк.

Если значение команды -, текст команды считывается из стандартных входных данных. При использовании параметра команды с стандартными входными данными необходимо перенаправить стандартные входные данные. Например:

@'
"in"

"hi" |
  % { "$_ there" }

"out"
'@ | powershell -NoProfile -Command -

В этом примере создаются следующие выходные данные:

in
hi there
out

Код выхода процесса определяется состоянием последней (выполненной) команды в блоке скрипта. Код выхода 0, если $?$true или 1, если $?$false. Если последняя команда является внешней программой или скриптом PowerShell, который явно задает код выхода, отличный от 0 или 1, код выхода преобразуется в 1 для кода выхода процесса. Чтобы сохранить конкретный код выхода, добавьте exit $LASTEXITCODE в командную строку или блок скрипта.

Аналогичным образом, значение 1 возвращается при ошибке завершения скрипта (завершающегося пространством выполнения), например throw или -ErrorAction Stop, происходит или при прерывании выполнения с помощью клавиш CTRL -C.

-ConfigurationName | -config

Указывает конечную точку конфигурации, в которой выполняется PowerShell. Это может быть любая конечная точка, зарегистрированная на локальном компьютере, включая конечные точки удаленного взаимодействия PowerShell по умолчанию или пользовательскую конечную точку с определенными возможностями роли пользователя.

Пример: pwsh -ConfigurationName AdminRoles

-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 string version of a command. Используйте этот параметр для отправки команд в 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. Переменная среды $env:PSExecutionPolicyPreference не существует на платформах, отличных от 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 , чтобы задать оболочку текущего пользователя:

    chsh -s /usr/bin/pwsh
    

Предупреждение

Установка pwsh в качестве оболочки входа в настоящее время не поддерживается в подсистеме Windows для Linux (WSL), и попытка задать pwsh в качестве оболочки входа может привести к тому, что не удается запустить WSL в интерактивном режиме.

-MTA

Запустите PowerShell с помощью многопоточных квартир. Этот параметр доступен только в Windows.

-NoExit | -noe

Не завершает работу после выполнения команд запуска.

Пример: pwsh -NoExit -Command Get-Date

-NoLogo | -nol

Скрывает баннер авторских прав при запуске интерактивных сеансов.

-NonInteractive | -noni

Не отображает интерактивный запрос пользователю. Любые попытки использовать интерактивные функции, такие как Read-Host или запросы подтверждения, приводят к возникновению ошибок, завершающих инструкции.

-NoProfile | -nop

Не загружает профили PowerShell.

-OutputFormat | -o | -of

Определяет форматирование выходных данных из PowerShell. Допустимые значения: Text (текстовые строки) или XML (сериализованный формат CLIXML).

Пример: pwsh -o XML -c Get-Date

При вызове сеанса PowerShell вы получаете десериализированные объекты в виде выходных данных, а не простых строк. При вызове из других оболочки выходные данные форматируются как текст CLIXML.

-SettingsFile | -settings

Переопределяет файл параметров-wинтегрированной среды разработки powershell.config.json для сеанса. По умолчанию параметры интегрированной среды-wсчитываются из powershell.config.json в каталоге $PSHOME.

Обратите внимание, что эти параметры не используются конечной точкой, указанной аргументом -ConfigurationName.

Пример: pwsh -SettingsFile c:\myproject\powershell.config.json

-SSHServerMode | -sshs

Используется в sshd_config для запуска PowerShell в качестве подсистемы SSH. Оно не предназначено или поддерживается для любого другого использования.

-STA

Запустите PowerShell с помощью однопоточной квартиры. Это значение по умолчанию. Этот параметр доступен только на платформе Windows.

-Version | -v

Отображает версию PowerShell. Дополнительные параметры игнорируются.

-WindowStyle | -w

Задает стиль окна для сеанса. Допустимые значения: обычные, свернутые, развернутые и скрытые.

-WorkingDirectory | -wd

Задает исходный рабочий каталог, выполняя при запуске. Поддерживается любой допустимый путь к файлу PowerShell.

Чтобы запустить PowerShell в домашнем каталоге, используйте: pwsh -WorkingDirectory ~

-Help, -?, /?

Отображает справку по pwsh. Если вы вводите команду pwsh в PowerShell, добавьте параметры команды с дефисом (-), а не косой чертой (/).