Informazioni su pwshAbout pwsh

Descrizione breveShort Description

Viene illustrato come utilizzare l' pwsh interfaccia della riga di comando.Explains how to use the pwsh command-line interface. Visualizza i parametri della riga di comando e descrive la sintassi.Displays the command-line parameters and describes the syntax.

Descrizione lungaLong Description

SintassiSyntax

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

ParametriParameters

Tutti i parametri non fanno distinzione tra maiuscole e minuscole.All parameters are case-insensitive.

-File | -f-File | -f

Se il valore di File è - , il testo del comando viene letto dall'input standard.If the value of File is -, the command text is read from standard input. pwsh -File -L'esecuzione senza input standard reindirizzato avvia una sessione normale.Running pwsh -File - without redirected standard input starts a regular session. Equivale a non specificare il File parametro.This is the same as not specifying the File parameter at all.

Si tratta del parametro predefinito se non sono presenti parametri, ma i valori sono presenti nella riga di comando.This is the default parameter if no parameters are present but values are present in the command line. Lo script specificato viene eseguito nell'ambito locale ("dot-sourced"), in modo che le funzioni e le variabili create dallo script siano disponibili nella sessione corrente.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. Immettere il percorso del file di script ed eventuali parametri.Enter the script file path and any parameters. Il file deve essere l'ultimo parametro del comando, perché tutti i caratteri digitati dopo il nome del parametro file vengono interpretati come il percorso del file di script seguito dai parametri dello 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.

In genere, i parametri opzionali di uno script sono inclusi o omessi.Typically, the switch parameters of a script are either included or omitted. Ad esempio, il comando seguente usa il parametro all del file di script 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

In rari casi, potrebbe essere necessario fornire un valore booleano per un parametro switch.In rare cases, you might need to provide a Boolean value for a switch parameter. Per fornire un valore booleano per un parametro switch nel valore del parametro file , usare il parametro normalmente seguito da due punti e il valore booleano, ad esempio il seguente: -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.

I parametri passati allo script vengono passati come stringhe letterali, dopo l'interpretazione da parte della shell corrente.Parameters passed to the script are passed as literal strings, after interpretation by the current shell. Ad esempio, se ci si trova in cmd.exe e si vuole passare un valore della variabile di ambiente, usare la cmd.exe sintassi: 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%

Al contrario, l'esecuzione pwsh -File .\test.ps1 -TestParam $env:windir di in cmd.exe restituisce lo script che riceve la stringa letterale $env:windir perché non ha un significato speciale per la cmd.exe shell corrente.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. Lo $env:windir stile del riferimento a una variabile di ambiente può essere usato all'interno di un parametro del comando , poiché viene interpretato come codice PowerShell.The $env:windir style of environment variable reference can be used inside a Command parameter, since there it is interpreted as PowerShell code.

Analogamente, se si desidera eseguire lo stesso comando da uno script batch , utilizzare %~dp0 invece di .\ o $PSScriptRoot per rappresentare la directory di esecuzione corrente: 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%. Se invece si usa .\test.ps1 , PowerShell genera un errore perché non è in grado di trovare il percorso letterale .\test.ps1If you instead used .\test.ps1, PowerShell would throw an error because it cannot find the literal path .\test.ps1

Quando il file script termina con un exit comando, il codice di uscita del processo viene impostato sull'argomento numerico utilizzato con il 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 terminazione normale, il codice di uscita è sempre 0 .With normal termination, the exit code is always 0.

Analogamente a -Command , quando si verifica un errore di terminazione di uno script, il codice di uscita viene impostato su 1 .Similar to -Command, when a script-terminating error occurs, the exit code is set to 1. Tuttavia, a differenza di -Command , quando l'esecuzione viene interrotta con CTRL - C , il codice di uscita è 0 .However, unlike with -Command, when the execution is interrupted with Ctrl-C the exit code is 0.

-Command | -c-Command | -c

Esegue i comandi specificati (e gli eventuali parametri) come se fossero stati digitati al prompt dei comandi di PowerShell, quindi viene chiuso, a meno che non NoExit sia specificato il parametro.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.

Il valore di Command può essere - , un blocco di script o una stringa.The value of Command can be -, a script block, or a string. Se il valore di Command è - , il testo del comando viene letto dall'input standard.If the value of Command is -, the command text is read from standard input.

Il parametro Command accetta solo un blocco di script per l'esecuzione quando è in grado di riconoscere il valore passato a Command come 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. Questa operazione only può essere eseguita solo pwsh da un altro host PowerShell.This is only possible when running pwsh from another PowerShell host. Il tipo scriptblock può essere contenuto in una variabile esistente, restituito da un'espressione o analizzato dall'host PowerShell come un blocco di script letterale racchiuso tra parentesi graffe ( {} ), prima di essere passato 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}

In non cmd.exe esiste un blocco di script (o un tipo scriptblock ), pertanto il valore passato a Command sarà sempre una stringa.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. È possibile scrivere un blocco di script all'interno della stringa, ma anziché essere eseguito, si comporterà esattamente come se fosse stato digitato a un prompt tipico di PowerShell, ovvero verrà stampato il contenuto del blocco di 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 stringa passata a Command viene ancora eseguita come codice PowerShell, pertanto le parentesi graffe del blocco di script non sono spesso necessarie nella prima posizione quando si esegue da 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. Per eseguire un blocco di script inline definito all'interno di una stringa, è possibile usare l'operatore di chiamata &:To execute an inline script block defined inside a string, the call operator & can be used:

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

Se il valore di Command è una stringa, Command deve essere l'ultimo parametro per pwsh, perché tutti gli argomenti che lo seguono vengono interpretati come parte del comando da eseguire.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.

Quando viene chiamato dall'interno di una sessione di PowerShell esistente, i risultati vengono restituiti alla shell padre come oggetti XML deserializzati, non come oggetti attivi.When called from within an existing PowerShell session, the results are returned to the parent shell as deserialized XML objects, not live objects. Per le altre shell, i risultati vengono restituiti come stringhe.For other shells, the results are returned as strings.

Se il valore di Command è - , il testo del comando viene letto dall'input standard.If the value of Command is -, the command text is read from standard input. Quando si usa il parametro Command con input standard, è necessario reindirizzare l'input standard.You must redirect standard input when using the Command parameter with standard input. Ad esempio:For example:

@'
"in"

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

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

Nell'esempio viene prodotto l'output seguente:This example produces the following output:

in
hi there
out

Il codice di uscita del processo è determinato dallo stato dell'ultimo comando (eseguito) all'interno del blocco di script.The process exit code is determined by status of the last (executed) command within the script block. Il codice di uscita è 0 quando $? è $true o 1 quando $? è $false .The exit code is 0 when $? is $true or 1 when $? is $false. Se l'ultimo comando è un programma esterno o uno script di PowerShell che imposta in modo esplicito un codice di uscita diverso da 0 o 1 , il codice di uscita viene convertito in 1 per il codice di uscita del processo.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. Per mantenere il codice di uscita specifico, aggiungere exit $LASTEXITCODE alla stringa di comando o al blocco di script.To preserve the specific exit code, add exit $LASTEXITCODE to your command string or script block.

Analogamente, viene restituito il valore 1 quando si verifica un errore di terminazione di script (spazio), ad esempio throw o -ErrorAction Stop , oppure quando l'esecuzione viene interrotta 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

Specifica un endpoint di configurazione in cui viene eseguito PowerShell.Specifies a configuration endpoint in which PowerShell is run. Può trattarsi di qualsiasi endpoint registrato nel computer locale, inclusi gli endpoint di comunicazione remota di PowerShell predefiniti o un endpoint personalizzato con funzionalità specifiche del ruolo utente.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.

Esempio: pwsh -ConfigurationName AdminRolesExample: pwsh -ConfigurationName AdminRoles

-CustomPipeName-CustomPipeName

Specifica il nome da utilizzare per un ulteriore server IPC (named pipe) utilizzato per il debug e altre comunicazioni tra processi.Specifies the name to use for an additional IPC server (named pipe) used for debugging and other cross-process communication. Questo offre un meccanismo prevedibile per la connessione ad altre istanze di PowerShell.This offers a predictable mechanism for connecting to other PowerShell instances. Usato in genere con il parametro CustomPipeName in Enter-PSHostProcess .Typically used with the CustomPipeName parameter on Enter-PSHostProcess.

Questo parametro è stato introdotto in PowerShell 6,2.This parameter was introduced in PowerShell 6.2.

Ad esempio:For example:

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

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

Accetta una versione in formato stringa con codifica Base64 di un comando.Accepts a Base64-encoded string version of a command. Usare questo parametro per inviare comandi a PowerShell che richiedono una quota complessa e nidificata.Use this parameter to submit commands to PowerShell that require complex, nested quoting. La rappresentazione Base64 deve essere una stringa con codifica UTF-16.The Base64 representation must be a UTF-16 encoded string.

Ad esempio:For example:

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

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

Imposta i criteri di esecuzione predefiniti per la sessione corrente e li salva nella $env:PSExecutionPolicyPreference variabile di ambiente.Sets the default execution policy for the current session and saves it in the $env:PSExecutionPolicyPreference environment variable. Questo parametro non modifica i criteri di esecuzione configurati in modo permanente.This parameter does not change the persistently configured execution policies.

Questo parametro si applica solo ai computer Windows.This parameter only applies to Windows computers. La $env:PSExecutionPolicyPreference variabile di ambiente non esiste nelle piattaforme non Windows.The $env:PSExecutionPolicyPreference environment variable does not exist on non-Windows platforms.

-InputFormat | -INP | -If-InputFormat | -inp | -if

Descrive il formato dei dati inviati a PowerShell.Describes the format of data sent to PowerShell. I valori validi sono "Text" (stringhe di testo) o "XML" (formato CLIXML serializzato).Valid values are "Text" (text strings) or "XML" (serialized CLIXML format).

-Interattivo | -i-Interactive | -i

Presentare un prompt interattivo all'utente.Present an interactive prompt to the user. Inverso per il parametro non interattivo.Inverse for NonInteractive parameter.

-Login | -l-Login | -l

In Linux e macOS avvia PowerShell come shell di accesso, usando/bin/sh per eseguire i profili di accesso, ad esempio/etc/profile e ~/.profile.On Linux and macOS, starts PowerShell as a login shell, using /bin/sh to execute login profiles such as /etc/profile and ~/.profile. In Windows, questa opzione non esegue alcuna operazione.On Windows, this switch does nothing.

Importante

Questo parametro deve essere prima di tutto per avviare PowerShell come shell di accesso.This parameter must come first to start PowerShell as a login shell. Il passaggio di questo parametro in un'altra posizione verrà ignorato.Passing this parameter in another position will be ignored.

Per configurare pwsh la shell di accesso nei sistemi operativi simili a UNIX:To set up pwsh as the login shell on UNIX-like operating systems:

  • Verificare che il percorso assoluto completo di pwsh sia elencato in /etc/shellsVerify that the full absolute path to pwsh is listed under /etc/shells

    • Questo percorso è in genere simile /usr/bin/pwsh a Linux o /usr/local/bin/pwsh in MacOSThis path is usually something like /usr/bin/pwsh on Linux or /usr/local/bin/pwsh on macOS
    • Con alcuni metodi di installazione, questa voce verrà aggiunta automaticamente al momento dell'installazioneWith some installation methods, this entry will be added automatically at installation time
    • Se pwsh non è presente in /etc/shells , utilizzare un editor per aggiungere il percorso a nell' pwsh ultima riga.If pwsh is not present in /etc/shells, use an editor to append the path to pwsh on the last line. Sono necessari privilegi elevati per la modifica.This requires elevated privileges to edit.
  • Usare l'utilità chsh per impostare la shell dell'utente corrente su pwsh :Use the chsh utility to set your current user's shell to pwsh:

    chsh -s /usr/bin/pwsh
    

Avviso

pwshL'impostazione di come shell di accesso non è attualmente supportata nel sottosistema Windows per Linux (WSL) e il tentativo di impostare pwsh come shell di accesso può comportare l'impossibilità di avviare WSL in modo interattivo.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

Avviare PowerShell usando un apartment multithread.Start PowerShell using a multi-threaded apartment. Questa opzione è disponibile solo in Windows.This switch is only available on Windows.

-NoExit | -Noe-NoExit | -noe

Non viene chiuso dopo l'esecuzione dei comandi di avvio.Does not exit after running startup commands.

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

-Nologo | -Nol-NoLogo | -nol

Nasconde il banner sul copyright all'avvio delle sessioni interattive.Hides the copyright banner at startup of interactive sessions.

-Non interattivo | -Noni-NonInteractive | -noni

Non presenta un prompt interattivo all'utente.Does not present an interactive prompt to the user. Eventuali tentativi di usare funzionalità interattive, Read-Host ad esempio o richieste di conferma, generano errori di terminazione delle istruzioni.Any attempts to use interactive features, like Read-Host or confirmation prompts, result in statement-terminating errors.

-Noprofile | -NOP-NoProfile | -nop

Non carica i profili di PowerShell.Does not load the PowerShell profiles.

-OutputFormat | -o | -di-OutputFormat | -o | -of

Determina la formattazione dell'output di PowerShell.Determines how output from PowerShell is formatted. I valori validi sono "Text" (stringhe di testo) o "XML" (formato CLIXML serializzato).Valid values are "Text" (text strings) or "XML" (serialized CLIXML format).

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

Quando viene chiamato con una sessione di PowerShell, si ottengono oggetti deserializzati come output piuttosto che stringhe semplici.When called withing a PowerShell session, you get deserialized objects as output rather plain strings. Quando viene chiamato da altre shell, l'output è dati stringa formattati come testo CLIXML.When called from other shells, the output is string data formatted as CLIXML text.

-SettingsFile | -impostazioni-SettingsFile | -settings

Esegue l'override del powershell.config.json file di impostazioni a livello di sistema per la sessione.Overrides the system-wide powershell.config.json settings file for the session. Per impostazione predefinita, le impostazioni a livello di sistema vengono lette da powershell.config.json nella $PSHOME Directory.By default, system-wide settings are read from the powershell.config.json in the $PSHOME directory.

Si noti che queste impostazioni non vengono utilizzate dall'endpoint specificato dall' -ConfigurationName argomento.Note that these settings are not used by the endpoint specified by the -ConfigurationName argument.

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

-SSHServerMode | -sshs-SSHServerMode | -sshs

Usato in sshd_config per l'esecuzione di PowerShell come sottosistema SSH.Used in sshd_config for running PowerShell as an SSH subsystem. Non è previsto né supportato per altri usi.It is not intended or supported for any other use.

-STA-STA

Avviare PowerShell usando un Apartment a thread singolo.Start PowerShell using a single-threaded apartment. Questa è la modalità predefinita.This is the default. Questa opzione è disponibile solo in Windows.This switch is only available on Windows.

-Version | -v-Version | -v

Visualizza la versione di PowerShell.Displays the version of PowerShell. Parametri aggiuntivi ignorati.Additional parameters are ignored.

-WindowStyle | -w-WindowStyle | -w

Imposta lo stile della finestra per la sessione.Sets the window style for the session. I valori validi sono Normal, Minimized, Maximized e Hidden.Valid values are Normal, Minimized, Maximized and Hidden.

-WorkingDirectory | -WD-WorkingDirectory | -wd

Imposta la directory di lavoro iniziale eseguendo all'avvio.Sets the initial working directory by executing at startup. È supportato qualsiasi percorso file di PowerShell valido.Any valid PowerShell file path is supported.

Per avviare PowerShell nella Home Directory, usare: pwsh -WorkingDirectory ~To start PowerShell in your home directory, use: pwsh -WorkingDirectory ~

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

Visualizza la Guida di pwsh .Displays help for pwsh. Se si digita un comando pwsh in PowerShell, anteporre i parametri del comando con un trattino ( - ) e non una barra ( / ).If you are typing a pwsh command in PowerShell, prepend the command parameters with a hyphen (-), not a forward slash (/).