2015-03-11 47 views
17

Non riesco a visualizzare tutti i dettagli del motivo per cui ho bisogno di questo, ma gli utenti devono essere in grado di avviare PowerShell come account di servizio e quando PowerShell viene caricato deve eseguire uno script . Posso già lanciare PowerShell con le credenziali memorizzate (memorizzate come una stringa sicura), ma per la vita di me non riesco a ottenere lo script (che si trova in $ args) da eseguire. Ho provato una varietà di cose, e di seguito è dove sono attualmente. Qualsiasi aiuto sarebbe molto apprezzato.Esecuzione di uno script come altro utente e avvio di uno script

$user = "domain\service.account" 
$pwd1 = "big long huge string of characters" 
$pwd = ($pwd1 | ConvertTo-SecureString) 
$Credential = New-Object System.Management.Automation.PSCredential $user, $pwd 
$args = "\\domain.local\location\location\location\Script\script.ps1" 
Start-Process powershell.exe -Credential $Credential -ArgumentList ("-file $args") 
+0

Sono un po 'tardi ma ... Come si salva la password nel tuo script in chiaro ... Mi sembra che ci sia un problema di sicurezza ,. –

risposta

1

Prova ad aggiungere l'opzione RunAs al Start-Process

Start-Process powershell.exe -Credential $Credential -Verb RunAs -ArgumentList ("-file $args") 
+0

Grazie, alla fine ho visto il motivo del prompt delle credenziali. L'enorme stringa utilizzata è troppo grande, quindi ho bisogno di guardare altre opzioni per l'archiviazione e/o la conversione di questa password. –

+0

RunAs genera anche un profilo utente? – Bridger

+2

L'aggiunta di '-Verb RunAs' mi restituisce un' Il set di parametri non può essere risolto usando i parametri specificati. Gli altri miei parametri sono -Attenduto, -Credential $ creds, -WorkingDirectory C: \ -ArgumentList "..." Questo è con powershell 5. – sirdank

15

ho trovato questo ha lavorato per me.

$username = 'user' 
$password = 'password' 

$securePassword = ConvertTo-SecureString $password -AsPlainText -Force 
$credential = New-Object System.Management.Automation.PSCredential $username, $securePassword 
Start-Process Notepad.exe -Credential $credential 

Aggiornato: modificato utilizzando le virgolette singole per evitare problemi di carattere speciale annotati da Paddy.

+1

Ho dovuto inserire la mia password tra virgolette singole poiché conteneva caratteri 'speciali'. È possibile controllare la password è stata memorizzata correttamente scrivendo '$ password' al prompt, stamperà ciò che è memorizzato nella variabile – Paddy

+0

Grazie @Paddy, ho aggiornato il codice per riflettere il tuo commento. –

19

È possibile aprire una nuova finestra di PowerShell in una credenziale utente specificato come questo:

start powershell -credential "" 

enter image description here

+2

In qualche modo, quando utilizzo questo metodo, non posso digitare nulla nella finestra di PowerShell appena aperta. L'uso del trucco da https://stackoverflow.com/a/44797801/1108916 funziona, però. Sospiro. – pmbanka

+0

Oh strano, se chiudi la finestra di PowerShell del genitore, il nuovo bambino può ricevere l'input da tastiera –

+0

Perché, è la funzione di Windows per impostazione predefinita. –

0

in Windows Server 2012 o 2016 è possibile cercare di Windows PowerShell e poi "Pin to Start" . Dopodiché vedrai l'opzione "Esegui come utente diverso" facendo clic con il tasto destro sui riquadri della pagina iniziale.

6

Ecco un altro modo per ottenere questo tramite l'interfaccia utente.

0) Fare clic destro sul PowerShell icona quando sulla barra delle applicazioni

1) Maiusc + tasto destro del mouse su Windows PowerShell

2) "Esegui come altro utente"

Pic