Acerca de pwshAbout pwsh

Descripción breveShort Description

Explica cómo usar la pwsh interfaz de la línea de comandos.Explains how to use the pwsh command-line interface. Muestra los parámetros de la línea de comandos y describe la sintaxis.Displays the command-line parameters and describes the syntax.

Descripción largaLong Description

SintaxisSyntax

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 | -? | /?

ParámetrosParameters

Todos los parámetros no distinguen mayúsculas de minúsculas.All parameters are case-insensitive.

-Archivo | -f-File | -f

Si el valor de File es - , el texto del comando se lee de la entrada estándar.If the value of File is -, the command text is read from standard input. pwsh -File -La ejecución sin una entrada estándar redirigida inicia una sesión normal.Running pwsh -File - without redirected standard input starts a regular session. Es lo mismo que no especificar el File parámetro en absoluto.This is the same as not specifying the File parameter at all.

Este es el parámetro predeterminado si no hay ningún parámetro presente, pero los valores están presentes en la línea de comandos.This is the default parameter if no parameters are present but values are present in the command line. El script especificado se ejecuta en el ámbito local ("origen de puntos"), de modo que las funciones y variables que crea el script están disponibles en la sesión actual.The specified script runs in the local scope ("dot-sourced"), so that the functions and variables that the script creates are available in the current session. Escriba la ruta de acceso del archivo de script y los parámetros.Enter the script file path and any parameters. File debe ser el último parámetro del comando, ya que todos los caracteres que se escriben después del nombre del parámetro file se interpretan como la ruta de acceso del archivo de script seguido de los parámetros del script.File must be the last parameter in the command, because all characters typed after the File parameter name are interpreted as the script file path followed by the script parameters.

Normalmente, los parámetros de modificador de un script se incluyen o se omiten.Typically, the switch parameters of a script are either included or omitted. Por ejemplo, el siguiente comando usa el parámetro All del archivo de script de Get-Script.ps1: -File .\Get-Script.ps1 -AllFor example, the following command uses the All parameter of the Get-Script.ps1 script file: -File .\Get-Script.ps1 -All

En raras ocasiones, es posible que deba proporcionar un valor booleano para un parámetro de modificador.In rare cases, you might need to provide a Boolean value for a switch parameter. Para proporcionar un valor booleano para un parámetro de modificador en el valor del parámetro File , use el parámetro normalmente seguido inmediatamente de un signo de dos puntos y el valor booleano, como el siguiente: -File .\Get-Script.ps1 -All:$False .To provide a Boolean value for a switch parameter in the value of the File parameter, Use the parameter normally followed immediately by a colon and the boolean value, such as the following: -File .\Get-Script.ps1 -All:$False.

Los parámetros que se pasan al script lo hacen como cadenas literales (una vez interpretados por el shell actual).Parameters passed to the script are passed as literal strings, after interpretation by the current shell. Por ejemplo, si está en cmd.exe y desea pasar un valor de variable de entorno, usaría la cmd.exe Sintaxis: pwsh -File .\test.ps1 -TestParam %windir%For example, if you are in cmd.exe and want to pass an environment variable value, you would use the cmd.exe syntax: pwsh -File .\test.ps1 -TestParam %windir%

Por el contrario, pwsh -File .\test.ps1 -TestParam $env:windir la ejecución de en cmd.exe hace que el script reciba la cadena literal $env:windir porque no tiene ningún significado especial en el cmd.exe Shell actual.In contrast, running pwsh -File .\test.ps1 -TestParam $env:windir in cmd.exe results in the script receiving the literal string $env:windir because it has no special meaning to the current cmd.exe shell. El $env:windir estilo de referencia de variable de entorno se puede usar dentro de un parámetro de comando , ya que se interpreta como código de PowerShell.The $env:windir style of environment variable reference can be used inside a Command parameter, since there it is interpreted as PowerShell code.

Del mismo modo, si desea ejecutar el mismo comando desde un script por lotes , usaría %~dp0 en lugar de .\ o $PSScriptRoot para representar el directorio de ejecución actual: pwsh -File %~dp0test.ps1 -TestParam %windir% .Similarly, if you want to execute the same command from a Batch script , you would use %~dp0 instead of .\ or $PSScriptRoot to represent the current execution directory: pwsh -File %~dp0test.ps1 -TestParam %windir%. Si en su lugar usa .\test.ps1 , PowerShell produciría un error porque no encuentra la ruta de acceso literal .\test.ps1If you instead used .\test.ps1, PowerShell would throw an error because it cannot find the literal path .\test.ps1

Cuando el archivo de script finaliza con un exit comando, el código de salida del proceso se establece en el argumento numérico que se usa con el exit comando.When the script file terminates with an exit command, the process exit code is set to the numeric argument used with the exit command. Con la finalización normal, el código de salida siempre es 0 .With normal termination, the exit code is always 0.

Similar a -Command , cuando se produce un error de terminación del script, el código de salida se establece en 1 .Similar to -Command, when a script-terminating error occurs, the exit code is set to 1. Sin embargo, a diferencia de -Command , cuando la ejecución se interrumpe con Ctrl - C , el código de salida es 0 .However, unlike with -Command, when the execution is interrupted with Ctrl-C the exit code is 0.

-Comando | -c-Command | -c

Ejecuta los comandos especificados (y todos los parámetros) como si se hubiesen escrito en el símbolo del sistema de PowerShell y, a continuación, se cierra, a menos que NoExit se especifique el parámetro.Executes the specified commands (and any parameters) as though they were typed at the PowerShell command prompt, and then exits, unless the NoExit parameter is specified.

El valor de Command puede ser - , un bloque de script o una cadena.The value of Command can be -, a script block, or a string. Si el valor de Command es - , el texto del comando se lee de la entrada estándar.If the value of Command is -, the command text is read from standard input.

El parámetro de comando solo acepta un bloque de script para su ejecución cuando puede reconocer el valor pasado al comando como tipo ScriptBlock .The Command parameter only accepts a script block for execution when it can recognize the value passed to Command as a ScriptBlock type. Esto solo es posible cuando se ejecuta pwsh desde otro host de PowerShell.This is only possible when running pwsh from another PowerShell host. El tipo ScriptBlock puede estar contenido en una variable existente, devuelto de una expresión o analizado por el host de PowerShell como un bloque de script literal entre llaves ( {} ), antes de pasarse a pwsh .The ScriptBlock type may be contained in an existing variable, returned from an expression, or parsed by the PowerShell host as a literal script block enclosed in curly braces ({}), before being passed to pwsh.

pwsh -Command {Get-WinEvent -LogName security}

En, no hay nada como cmd.exe un bloque de script (o tipo ScriptBlock ), por lo que el valor pasado Command a Command siempre será una cadena.In cmd.exe, there is no such thing as a script block (or ScriptBlock type), so the value passed to Command will always be a string. Puede escribir un bloque de script dentro de la cadena, pero en lugar de ejecutarse, se comportará exactamente como si lo hubiera escrito en una solicitud de PowerShell típica, devolviéndole los contenidos impresos del bloque de script.You can write a script block inside the string, but instead of being executed it will behave exactly as though you typed it at a typical PowerShell prompt, printing the contents of the script block back out to you.

Una cadena pasada al comando todavía se ejecuta como código de PowerShell, por lo que las llaves de bloque de script a menudo no son necesarias en el primer lugar cuando se ejecuta desde cmd.exe .A string passed to Command is still executed as PowerShell code, so the script block curly braces are often not required in the first place when running from cmd.exe. Para ejecutar un bloque de script alineado definido dentro de una cadena, se puede usar el operador de llamada &:To execute an inline script block defined inside a string, the call operator & can be used:

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

Si el valor de Command es una cadena, Command debe ser el último parámetro de pwsh, porque todos los argumentos que siguen se interpretan como parte del comando que se va a ejecutar.If the value of Command is a string, Command must be the last parameter for pwsh, because all arguments following it are interpreted as part of the command to execute.

Cuando se llama desde dentro de una sesión existente de PowerShell, los resultados se devuelven al shell principal como objetos XML deserializados, no como objetos activos.When called from within an existing PowerShell session, the results are returned to the parent shell as deserialized XML objects, not live objects. En el caso de otros shells, los resultados se devuelven como cadenas.For other shells, the results are returned as strings.

Si el valor de Command es - , el texto del comando se lee de la entrada estándar.If the value of Command is -, the command text is read from standard input. Debe redirigir la entrada estándar al usar el parámetro de comando con la entrada estándar.You must redirect standard input when using the Command parameter with standard input. Por ejemplo:For example:

@'
"in"

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

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

Este ejemplo produce el siguiente resultado:This example produces the following output:

in
hi there
out

El código de salida del proceso viene determinado por el estado del último comando (ejecutado) dentro del bloque de script.The process exit code is determined by status of the last (executed) command within the script block. El código de salida es 0 cuando $? es $true o 1 cuando $? es $false .The exit code is 0 when $? is $true or 1 when $? is $false. Si el último comando es un programa externo o un script de PowerShell que establece explícitamente un código de salida distinto de 0 o 1 , el código de salida se convierte en 1 para el código de salida del proceso.If the last command is an external program or a PowerShell script that explicitly sets an exit code other than 0 or 1, that exit code is converted to 1 for process exit code. Para conservar el código de salida específico, agregue exit $LASTEXITCODE a la cadena de comando o al bloque de script.To preserve the specific exit code, add exit $LASTEXITCODE to your command string or script block.

Del mismo modo, se devuelve el valor 1 cuando se produce un error de terminación de script (espacio de ejecución), como throw o -ErrorAction Stop , o cuando se interrumpe la ejecución con Ctrl - C.Similarly, the value 1 is returned when a script-terminating (runspace-terminating) error, such as a throw or -ErrorAction Stop, occurs or when execution is interrupted with Ctrl-C.

-ConfigurationName | -config-ConfigurationName | -config

Especifica un punto de conexión de configuración en el que se ejecuta PowerShell.Specifies a configuration endpoint in which PowerShell is run. Puede ser cualquier punto de conexión registrado en el equipo local, incluidos los puntos de conexión de comunicación remota de PowerShell predeterminados o un punto de conexión personalizado con capacidades de rol de usuario específicas.This can be any endpoint registered on the local machine including the default PowerShell remoting endpoints or a custom endpoint having specific user role capabilities.

Ejemplo: pwsh -ConfigurationName AdminRolesExample: pwsh -ConfigurationName AdminRoles

-CustomPipeName-CustomPipeName

Especifica el nombre que se va a usar para un servidor IPC adicional (canalización con nombre) que se usa para la depuración y otra comunicación entre procesos.Specifies the name to use for an additional IPC server (named pipe) used for debugging and other cross-process communication. Esto ofrece un mecanismo predecible para conectarse a otras instancias de PowerShell.This offers a predictable mechanism for connecting to other PowerShell instances. Normalmente se usa con el parámetro CustomPipeName en Enter-PSHostProcess .Typically used with the CustomPipeName parameter on Enter-PSHostProcess.

Este parámetro se incorporó en PowerShell 6,2.This parameter was introduced in PowerShell 6.2.

Por ejemplo:For example:

# PowerShell instance 1
pwsh -CustomPipeName mydebugpipe
# PowerShell instance 2
Enter-PSHostProcess -CustomPipeName mydebugpipe

-EncodedCommand | -e | -EC-EncodedCommand | -e | -ec

Acepta una versión de cadena codificada en Base64 de un comando.Accepts a Base64-encoded string version of a command. Use este parámetro para enviar comandos a PowerShell que requieran el entrecomillado anidado complejo.Use this parameter to submit commands to PowerShell that require complex, nested quoting. La representación en Base64 debe ser una cadena codificada en UTF-16.The Base64 representation must be a UTF-16 encoded string.

Por ejemplo:For example:

$command = 'dir "c:\program files" '
$bytes = [System.Text.Encoding]::Unicode.GetBytes($command)
$encodedCommand = [Convert]::ToBase64String($bytes)
pwsh -encodedcommand $encodedCommand

-ExecutionPolicy | -ex | -EP-ExecutionPolicy | -ex | -ep

Establece la Directiva de ejecución predeterminada para la sesión actual y la guarda en la $env:PSExecutionPolicyPreference variable de entorno.Sets the default execution policy for the current session and saves it in the $env:PSExecutionPolicyPreference environment variable. Este parámetro no cambia las directivas de ejecución configuradas de forma persistente.This parameter does not change the persistently configured execution policies.

Este parámetro solo se aplica a equipos Windows.This parameter only applies to Windows computers. La $env:PSExecutionPolicyPreference variable de entorno no existe en plataformas que no son de Windows.The $env:PSExecutionPolicyPreference environment variable does not exist on non-Windows platforms.

-Formatodeentrada | -INP | -Si-InputFormat | -inp | -if

Describe el formato de los datos que se envían a PowerShell.Describes the format of data sent to PowerShell. Los valores válidos son "Text" (cadenas de texto) o "XML" (formato CLIXML serializado).Valid values are "Text" (text strings) or "XML" (serialized CLIXML format).

-Interactive | -i-Interactive | -i

Presente un aviso interactivo al usuario.Present an interactive prompt to the user. Inversa para el parámetro Interactive.Inverse for NonInteractive parameter.

-Inicio de sesión | -l-Login | -l

En Linux y macOS, inicia PowerShell como un shell de inicio de sesión, mediante/bin/sh para ejecutar perfiles de inicio de sesión como/etc/profile y ~/.Profile.On Linux and macOS, starts PowerShell as a login shell, using /bin/sh to execute login profiles such as /etc/profile and ~/.profile. En Windows, este modificador no hace nada.On Windows, this switch does nothing.

Importante

Este parámetro debe aparecer primero para iniciar PowerShell como un shell de inicio de sesión.This parameter must come first to start PowerShell as a login shell. Se omitirá el paso de este parámetro en otra posición.Passing this parameter in another position will be ignored.

Para configurar pwsh como el shell de inicio de sesión en sistemas operativos similares a Unix:To set up pwsh as the login shell on UNIX-like operating systems:

  • Compruebe que la ruta de acceso absoluta completa pwsh se muestra debajo de /etc/shellsVerify that the full absolute path to pwsh is listed under /etc/shells

    • Normalmente, esta ruta de acceso es similar a la /usr/bin/pwsh de Linux o /usr/local/bin/pwsh de MacOS.This path is usually something like /usr/bin/pwsh on Linux or /usr/local/bin/pwsh on macOS
    • Con algunos métodos de instalación, esta entrada se agregará automáticamente en el momento de la instalaciónWith some installation methods, this entry will be added automatically at installation time
    • Si pwsh no está presente en /etc/shells , utilice un editor para anexar la ruta de acceso a pwsh en la última línea.If pwsh is not present in /etc/shells, use an editor to append the path to pwsh on the last line. Esto requiere privilegios elevados para editar.This requires elevated privileges to edit.
  • Use la utilidad chsh para establecer el Shell del usuario actual en pwsh :Use the chsh utility to set your current user's shell to pwsh:

    chsh -s /usr/bin/pwsh
    

Advertencia

pwshLa configuración como el shell de inicio de sesión no se admite actualmente en el subsistema de Windows para Linux (WSL) y, si se intenta establecer pwsh como el shell de inicio de sesión, puede provocar que no se pueda iniciar WSL interactivamente.Setting pwsh as the login shell is currently not supported on Windows Subsystem for Linux (WSL), and attempting to set pwsh as the login shell there may lead to being unable to start WSL interactively.

-MTA-MTA

Inicie PowerShell con un contenedor multiproceso.Start PowerShell using a multi-threaded apartment. Este modificador solo está disponible en Windows.This switch is only available on Windows.

-NoExit | -noe-NoExit | -noe

No se cierra después de ejecutar comandos de inicio.Does not exit after running startup commands.

Ejemplo: pwsh -NoExit -Command Get-DateExample: pwsh -NoExit -Command Get-Date

-Nologo | -nol-NoLogo | -nol

Oculta la pancarta de copyright al inicio de las sesiones interactivas.Hides the copyright banner at startup of interactive sessions.

-Interactive | -noni-NonInteractive | -noni

No presenta un aviso interactivo al usuario.Does not present an interactive prompt to the user. Cualquier intento de usar características interactivas, como Read-Host o mensajes de confirmación, produce errores de terminación de instrucciones.Any attempts to use interactive features, like Read-Host or confirmation prompts, result in statement-terminating errors.

-NOPROFILE | -NOP-NoProfile | -nop

No carga los perfiles de PowerShell.Does not load the PowerShell profiles.

-OutputFormat | -o | -de-OutputFormat | -o | -of

Determina cómo se formatea la salida de PowerShell.Determines how output from PowerShell is formatted. Los valores válidos son "Text" (cadenas de texto) o "XML" (formato CLIXML serializado).Valid values are "Text" (text strings) or "XML" (serialized CLIXML format).

Ejemplo: pwsh -o XML -c Get-DateExample: pwsh -o XML -c Get-Date

Cuando se llama con una sesión de PowerShell, se obtienen objetos deserializados como cadenas de salida en lugar de cadenas sin formato.When called withing a PowerShell session, you get deserialized objects as output rather plain strings. Cuando se llama desde otros shells, la salida son datos de cadena con formato de texto CLIXML.When called from other shells, the output is string data formatted as CLIXML text.

-SettingsFile | -configuración-SettingsFile | -settings

Invalida el powershell.config.json archivo de configuración de todo el sistema para la sesión.Overrides the system-wide powershell.config.json settings file for the session. De forma predeterminada, la configuración de todo el sistema se lee desde el powershell.config.json $PSHOME directorio.By default, system-wide settings are read from the powershell.config.json in the $PSHOME directory.

Tenga en cuenta que esta configuración no se utiliza en el punto de conexión especificado por el -ConfigurationName argumento.Note that these settings are not used by the endpoint specified by the -ConfigurationName argument.

Ejemplo: pwsh -SettingsFile c:\myproject\powershell.config.jsonExample: pwsh -SettingsFile c:\myproject\powershell.config.json

-SSHServerMode | -sshs-SSHServerMode | -sshs

Se usa en sshd_config para ejecutar PowerShell como un subsistema SSH.Used in sshd_config for running PowerShell as an SSH subsystem. No se pretende ni se admite para ningún otro uso.It is not intended or supported for any other use.

-STA-STA

Inicie PowerShell con un contenedor uniproceso.Start PowerShell using a single-threaded apartment. Este es el valor predeterminado.This is the default. Este modificador solo está disponible en Windows.This switch is only available on Windows.

-Versión | -v-Version | -v

Muestra la versión de PowerShell.Displays the version of PowerShell. Se omiten los parámetros adicionales.Additional parameters are ignored.

-EstiloVentana | -w-WindowStyle | -w

Establece el estilo de ventana de la sesión.Sets the window style for the session. Los valores válidos son Normal, Minimizada, Maximizada y Oculta.Valid values are Normal, Minimized, Maximized and Hidden.

-WorkingDirectory | -WD-WorkingDirectory | -wd

Establece el directorio de trabajo inicial al ejecutar en el inicio.Sets the initial working directory by executing at startup. Se admite cualquier ruta de acceso del archivo de PowerShell válida.Any valid PowerShell file path is supported.

Para iniciar PowerShell en el directorio particular, use: pwsh -WorkingDirectory ~To start PowerShell in your home directory, use: pwsh -WorkingDirectory ~

-Help, -?, /?-Help, -?, /?

Muestra la ayuda de pwsh .Displays help for pwsh. Si está escribiendo un comando pwsh en PowerShell, anteponga a los parámetros del comando un guion ( - ), no una barra diagonal ( / ).If you are typing a pwsh command in PowerShell, prepend the command parameters with a hyphen (-), not a forward slash (/).