Sono sempre alla ricerca di comandi e modi alternativi per fare certe operazioni durante il mio lavoro di assistenza remota, in questo articolo vado a utilizzare PowerShell per avviare i processi del sistema operativo, come aprire una cartella o un determinato file con il programma associato. Una difficoltà nel mio lavoro di supporto è quando non riesco a collegarmi al computer remoto, per qualsiasi motivo, e dall’altra parte del telefono trovo un utente molto poco pratico, per cui cercare un file, o un programma, nel computer o lanciare un qualsiasi comando è impossibile. Vediamo come usare il cmdlet Start-Process di PowerShell.

Start-Process

Ci sono processi avviabili inserendo semplicemente il loro nome come Start-Process -FilePath "regedit.exe", oppure Start-Process -FilePath "winword.exe", per altri dobbiamo indicare il percorso completo per trovarli Start-Process -FilePath "C:\Program Files (x86)\PhotoFiltre\PhotoFiltre.exe". Se vogliamo aprire una cartella basta indicarne il percorso Start-Process -FilePath "C:\Program Files (x86)\PhotoFiltre", invece se inseriamo un file questo verrà aperto dal programma ad esso associato Start-Process -FilePath "D:\Dati Personali\Immagini\5.jpg".

A video, a meno di errori nel comando, non ci saranno riscontri se non l’apertura del file o del programma.

Come avviare processi Start-Process PowerShell

Per aprire un prompt dei comandi, o un qualsiasi programma, come amministratore va aggiunto il parametro -Verb RunAs:

  • Start-Process -FilePath "cmd.exe" -Verb RunAs

Come avviare processi Start-Process PowerShell

L’alias di Start-Process è Start che potete usare senza problemi, al suo posto, per avviare i comandi.

Wait

Se abbiamo bisogno che PowerShell esegua un serie di processi, ma che attenda la conclusione di uno di essi, prima di andare avanti con il prossimo, dobbiamo aggiungere -wait al comando.

Con uno script come questo viene subito aperto il registro di configurazione e solo alla sua chiusura si avvia notepad. Senza -wait si aprirebbero nello stesso momento.

  • start-process -filepath regedit.exe -wait start-process -filepath notepad.exe

Come avviare processi Start-Process PowerShell

Stampa file

Sempre utilizzando Start-Process possiamo mandare in stampa un file, sulla stampante predefinita, bisogna indicare il nome del file, tra le virgolette, nel -FilePath, mentre nel -WorkingDirectory va inserita la cartella dove si trova il file.

Come avviare processi Start-Process PowerShell

Avvio nascosto

Se vogliamo nascondere l’esecuzione di un processo, che non viene visto dall’utilizzatore del computer, possiamo aggiungere l’opzione -WindowsStyle Hidden.

Come avviare processi Start-Process PowerShell

Dimensioni schermata

L’opzione -WindowStyle permette di regolare anche le dimensioni di apertura della schermata del programma

  • # Dimensioni normali
  • Start-Process -FilePath "notepad.exe" -Wait -WindowStyle Normal
  • # Ridotto a icona nella barra applicazioni
  • Start-Process -FilePath "notepad.exe" -Wait -WindowStyle Minimized
  • # A tutto schermo
  • Start-Process -FilePath "notepad.exe" -Wait -WindowStyle Maximized

Come avviare processi Start-Process PowerShell

Gli argomenti

Gli argomenti da utilizzare in un comando sono quelle opzioni che permettono di fare una installazione silenziosa, per esempio, o dare certe impostazioni al programma che stiamo eseguendo.

Un comando come questo permette l’installazione del file.msi usando le opzioni /quiet /norestart.

Start-Process -FilePath "file.msi" -ArgumentList "/quiet /norestart"

Invece con

  • Start-Process -FilePath "C:\Program Files\Mozilla Firefox\firefox.exe" -ArgumentList "https://TurboLab.it" -Wait -WindowStyle Maximized

possiamo aprire TurboLab.it con il browser Firefox a tutto schermo.

Come avviare processi Start-Process PowerShell

Se ci sono degli argomenti particolarmente complessi, che PowerShell non riesce a gestire, mentre dal prompt dei comandi ci si riesce, possiamo avviare l’installazione attraverso un file .cmd e non dall’eseguibile d’installazione.

  • Start-Process -FilePath "C:\cartella\FileConArgomenti.cmd"

Eseguire come altro utente

Se abbiamo bisogno di eseguire un processo come altro utente, diverso da quello collegato al computer, per fare, per esempio, l’installazione di un programma come amministratore, possiamo usare questo comando, richiederà solo l’inserimento di user e password dell’altro utente.

  • Start-Process -FilePath "cmd.exe" -Credential (Get-Credential)

Come avviare processi Start-Process PowerShell

Reindirizzare l’output

Per alcuni comandi, come per esempio il ping, possiamo reindirizzare l’output del comando verso un file di testo così da poterlo consultare in seguito. Questo comando crea un file di testo con il contenuto del comando ping verso l’indirizzo 8.8.8.8.

  • Start-Process -FilePath "ping.exe" -ArgumentList "8.8.8.8" -RedirectStandardOutput d:\logping.txt

Come avviare processi Start-Process PowerShell

Conclusioni

Piccola nota personale, più provo a conoscere PowerShell più mi rendo conto delle sue potenzialità, ma anche di quanto sia facile sbagliare per un non esperto, quale io sono, basta mischiare qualche argomento e parametro di troppo e ti ritrovi con un errore rosso da decifrare.

Come avviare processi Start-Process PowerShell

Per il resto delle opzioni di questo cmdlet vi rimando a questa pagina Microsoft.