Start-Process
Avvia uno o più processi nel computer locale.
Sintassi
Start-Process
[-FilePath] <string>
[[-ArgumentList] <string[]>]
[-Credential <pscredential>]
[-WorkingDirectory <string>]
[-LoadUserProfile]
[-NoNewWindow]
[-PassThru]
[-RedirectStandardError <string>]
[-RedirectStandardInput <string>]
[-RedirectStandardOutput <string>]
[-WindowStyle <ProcessWindowStyle>]
[-Wait]
[-UseNewEnvironment]
[<CommonParameters>]
Start-Process
[-FilePath] <string>
[[-ArgumentList] <string[]>]
[-WorkingDirectory <string>]
[-PassThru]
[-Verb <string>]
[-WindowStyle <ProcessWindowStyle>]
[-Wait]
[<CommonParameters>]
Descrizione
Il Start-Process
cmdlet avvia uno o più processi nel computer locale. Per impostazione predefinita, Start-Process
crea un nuovo processo che eredita tutte le variabili di ambiente definite nel processo corrente.
Per specificare il programma eseguito nel processo, immettere un file eseguibile o un file script oppure un file che può essere aperto utilizzando un programma nel computer. Se si specifica un file non eseguibile, Start-Process
avvia il programma associato al file, simile al Invoke-Item
cmdlet .
È possibile usare i parametri di Start-Process
per specificare opzioni, ad esempio il caricamento di un profilo utente, l'avvio del processo in una nuova finestra o l'uso di credenziali alternative.
Esempio
Esempio 1: Avviare un processo che usa i valori predefiniti
In questo esempio viene avviato un processo che usa il Sort.exe
file nella cartella corrente. Il comando usa tutti i valori predefiniti, inclusi lo stile di finestra predefinito, la cartella di lavoro e le credenziali.
Start-Process -FilePath "sort.exe"
Esempio 2: Stampare un file di testo
In questo esempio viene avviato un processo che stampa il C:\PS-Test\MyFile.txt
file.
Start-Process -FilePath "myfile.txt" -WorkingDirectory "C:\PS-Test" -Verb Print
Esempio 3: Avviare un processo per ordinare gli elementi in un nuovo file
In questo esempio viene avviato un processo che ordina gli elementi nel TestSort.txt
file e restituisce gli elementi ordinati nei Sorted.txt
file. Eventuali errori vengono scritti nel SortError.txt
file. Il parametro UseNewEnvironment specifica che il processo viene eseguito con le proprie variabili di ambiente.
$processOptions = @{
FilePath = "sort.exe"
RedirectStandardInput = "TestSort.txt"
RedirectStandardOutput = "Sorted.txt"
RedirectStandardError = "SortError.txt"
UseNewEnvironment = $true
}
Start-Process @processOptions
In questo esempio viene usato lo splatting per passare i parametri al cmdlet . Per altre informazioni, vedere about_Splatting.
Esempio 4: Avviare un processo in una finestra ingrandita
In questo esempio viene avviato il Notepad.exe
processo. Ingrandisce la finestra e la mantiene fino al termine del processo.
Start-Process -FilePath "notepad" -Wait -WindowStyle Maximized
Esempio 5: Avviare PowerShell come amministratore
Questo esempio avvia PowerShell usando l'opzione Esegui come amministratore .
Start-Process -FilePath "powershell" -Verb RunAs
Esempio 6: Uso di verbi diversi per avviare un processo
In questo esempio viene illustrato come trovare i verbi che possono essere usati all'avvio di un processo. I verbi disponibili sono determinati dall'estensione del nome file del file eseguito nel processo.
$startExe = New-Object System.Diagnostics.ProcessStartInfo -Args powershell.exe
$startExe.verbs
open
runas
runasuser
Nell'esempio viene New-Object
usato per creare un oggetto System.Diagnostics.ProcessStartInfo per powershell.exe
, il file eseguito nel processo di PowerShell. La proprietà Verbs dell'oggetto ProcessStartInfo mostra che è possibile utilizzare i verbi Open e RunAs
con powershell.exe
o con qualsiasi processo che esegue un .exe
file.
Esempio 7: Specifica degli argomenti per il processo
Entrambi i comandi avviano l'interprete dei comandi di Windows, eseguendo un dir
comando nella Program Files
cartella . Poiché questo nome cartella contiene uno spazio, il valore deve essere racchiuso tra virgolette precedute da escape.
Si noti che il primo comando specifica una stringa come ArgumentList. Il secondo comando è una matrice di stringhe.
Start-Process -FilePath "$env:comspec" -ArgumentList "/c dir `"%SystemDrive%\Program Files`""
Start-Process -FilePath "$env:comspec" -ArgumentList "/c","dir","`"%SystemDrive%\Program Files`""
Parametri
-ArgumentList
Specifica i parametri o i valori dei parametri da utilizzare quando questo cmdlet avvia il processo. Gli argomenti possono essere accettati come singola stringa con gli argomenti separati da spazi o come matrice di stringhe separate da virgole. Il cmdlet unisce la matrice a una singola stringa con ogni elemento della matrice separata da un singolo spazio.
Le virgolette esterne delle stringhe di PowerShell non vengono incluse quando i valori ArgumentList vengono passati al nuovo processo. Se i parametri o i valori dei parametri contengono uno spazio o virgolette, devono essere racchiusi tra virgolette doppie precedute da escape. Per altre informazioni, vedere about_Quoting_Rules.
Per ottenere risultati ottimali, usare un singolo valore ArgumentList contenente tutti gli argomenti e tutti i caratteri di virgolette necessari.
Tipo: | String[] |
Alias: | Args |
Posizione: | 1 |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-Credential
Specifica un account utente che dispone delle autorizzazioni per eseguire questa azione. Per impostazione predefinita, il cmdlet usa le credenziali dell'utente corrente.
Digitare un nome utente, ad esempio User01 o Domain01\User01, oppure immettere un oggetto PSCredential generato dal Get-Credential
cmdlet. Se si digita un nome utente, viene richiesto di immettere la password.
Le credenziali vengono archiviate in un oggetto PSCredential e la password viene archiviata come SecureString.
Nota
Per altre informazioni sulla protezione dei dati SecureString , vedere How secure is SecureString?.
Tipo: | PSCredential |
Alias: | RunAs |
Posizione: | Named |
Valore predefinito: | Current user |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-FilePath
Specifica il percorso facoltativo e il nome file del programma eseguito nel processo. Immettere il nome di un file eseguibile o di un documento, ad esempio un .txt
file o .doc
, associato a un programma nel computer. Questo parametro è obbligatorio.
Se si specifica solo un nome file, usare il parametro WorkingDirectory per specificare il percorso.
Tipo: | String |
Alias: | PSPath |
Posizione: | 0 |
Valore predefinito: | None |
Necessario: | True |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-LoadUserProfile
Indica che questo cmdlet carica il profilo utente di Windows archiviato nella HKEY_USERS
chiave del Registro di sistema per l'utente corrente.
Questo parametro non influisce sui profili di PowerShell. Per altre informazioni, vedere about_Profiles.
Tipo: | SwitchParameter |
Alias: | Lup |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-NoNewWindow
Avvia il nuovo processo nella finestra della console corrente. Per impostazione predefinita in Windows, PowerShell apre una nuova finestra.
Non è possibile usare i parametri NoNewWindow e WindowStyle nello stesso comando.
Tipo: | SwitchParameter |
Alias: | nnw |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-PassThru
Restituisce un oggetto processo per ogni processo avviato dal cmdlet. Per impostazione predefinita, questo cmdlet non genera alcun output.
Tipo: | SwitchParameter |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-RedirectStandardError
Specifica un file. Questo cmdlet invia eventuali errori generati dal processo a un file specificato. Immettere il percorso e il nome file. Per impostazione predefinita, gli errori vengono visualizzati nella console.
Tipo: | String |
Alias: | RSE |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-RedirectStandardInput
Specifica un file. Questo cmdlet legge l'input dal file specificato. Immettere il percorso e il nome del file di input. Per impostazione predefinita, il processo ottiene l'input dalla tastiera.
Tipo: | String |
Alias: | RSI |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-RedirectStandardOutput
Specifica un file. Questo cmdlet invia l'output generato dal processo a un file specificato. Immettere il percorso e il nome file. Per impostazione predefinita, l'output viene visualizzato nella console.
Tipo: | String |
Alias: | RSO |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-UseNewEnvironment
Indica che questo cmdlet usa nuove variabili di ambiente specificate per il processo. Per impostazione predefinita, il processo avviato viene eseguito con le variabili di ambiente ereditate dal processo padre.
Tipo: | SwitchParameter |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-Verb
Specifica un verbo da utilizzare quando questo cmdlet avvia il processo. I verbi disponibili sono determinati dall'estensione del nome file del file eseguito nel processo.
La tabella seguente illustra i verbi per alcuni tipi di file di processo comuni.
Tipo di file | verbi |
---|---|
cmd | Edit , Open , Print , RunAs RunAsUser |
.exe | Open , RunAs , RunAsUser |
.txt | Open , Print , PrintTo |
.wav | Open , Play |
Per trovare i verbi che è possibile usare con il file eseguito in un processo, usare il New-Object
cmdlet per creare un oggetto System.Diagnostics.ProcessStartInfo per il file. I verbi disponibili si trovano nella proprietà Verbs dell'oggetto ProcessStartInfo . Per informazioni dettagliate, vedere gli esempi.
Tipo: | String |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-Wait
Indica che questo cmdlet attende il completamento del processo specificato e dei relativi discendenti prima di accettare più input. Questo parametro elimina il prompt dei comandi o mantiene la finestra fino al termine dei processi.
Tipo: | SwitchParameter |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-WindowStyle
Specifica lo stato della finestra utilizzata per il nuovo processo. Il valore predefinito è Normal
.
I valori validi per questo parametro sono:
Normal
Hidden
Minimized
Maximized
Non è possibile usare i parametri WindowStyle e NoNewWindow nello stesso comando.
Tipo: | ProcessWindowStyle |
Valori accettati: | Normal, Hidden, Minimized, Maximized |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
-WorkingDirectory
Specifica il percorso in cui deve essere avviato il nuovo processo. Il valore predefinito è il percorso del file eseguibile o del documento avviato. I caratteri jolly non sono supportati. Il percorso non deve contenere caratteri che verrebbero interpretati come caratteri jolly.
Tipo: | String |
Posizione: | Named |
Valore predefinito: | None |
Necessario: | False |
Accettare l'input della pipeline: | False |
Accettare caratteri jolly: | False |
Input
None
Non è possibile inviare tramite pipe oggetti a questo cmdlet.
Output
None
Per impostazione predefinita, questo cmdlet non restituisce alcun output.
Quando si usa il parametro PassThru , questo cmdlet restituisce un oggetto Process .
Note
Windows PowerShell include gli alias seguenti per Start-Process
:
saps
start
I comandi nativi sono file eseguibili installati nel sistema operativo. Questi eseguibili possono essere eseguiti da qualsiasi shell della riga di comando, ad esempio PowerShell. In genere si esegue il comando esattamente come si farebbe in bash
o cmd.exe
. Il Start-Process
cmdlet può essere usato per eseguire qualsiasi comando nativo, ma deve essere usato solo quando è necessario controllare la modalità di esecuzione del comando.
Per impostazione predefinita, Start-Process
avvia un processo in modo asincrono. Il controllo viene restituito immediatamente a PowerShell anche se il nuovo processo è ancora in esecuzione.
- Nel sistema locale, il processo avviato si trova indipendentemente dal processo chiamante.
- In un sistema remoto il nuovo processo viene terminato al termine della sessione remota, immediatamente dopo il
Start-Process
comando . Pertanto, non è possibile usareStart-Process
in una sessione remota prevedendo che il processo avviato scadevi la sessione.
Se è necessario usare Start-Process
in una sessione remota, richiamarlo con il parametro Wait . In alternativa, è possibile usare altri metodi per creare un nuovo processo nel sistema remoto.
Quando si usa il parametro Wait , Start-Process
attende che l'albero del processo (il processo e tutti i relativi discendenti) venga chiuso prima di restituire il controllo. Questo comportamento è diverso dal comportamento del Wait-Process
cmdlet, che attende solo l'uscita dei processi specificati.
In Windows, il caso d'uso più comune per Start-Process
consiste nell'usare il parametro Wait per bloccare lo stato di avanzamento fino all'uscita del nuovo processo. In un sistema non Windows, questa operazione è raramente necessaria perché il comportamento predefinito per le applicazioni da riga di comando è equivalente a Start-Process -Wait
.
Questo cmdlet viene implementato usando il metodo Start della classe System.Diagnostics.Process . Per altre informazioni su questo metodo, vedere Metodo Process.Start.