2015-04-10 31 views
5

Forse c'è un modo per farlo con il cmdlet Start-Process che non riesco a trovare? Gli altri Q/A correlati che ho trovato su StackOverflow come this, this e this offrono una soluzione per farlo con un codice C# personalizzato. La mia domanda è specificamente, c'è un modo semplice per farlo in PowerShell? Ad esempio, ci si trova in una console PS con privilegi elevati e si desidera eseguire un processo come non amministratore.Come eseguire un processo come non amministratore da una console PowerShell elevata?

+0

Questo è insolitamente funzionalità avanzate, PowerShell non può essere una scelta appropriata. –

risposta

8

È può specificare il TrustLevel con runas.exe, in modo efficace l'esecuzione di "ristretta"

runas /trustlevel:0x20000 "powershell.exe -command 'whoami /groups |clip'" 

Si dovrebbe vedere nell'output dal whoami che il gruppo Administrators nel token viene contrassegnato come "Usato per Nega solo"


enter image description here

+0

'0x20000' lascia l'etichetta" High Mandatory Level "dell'account abilitata. Con '0x1000' solo" Tutti "," Utenti "e" Utenti autenticati "sono abilitati. '/ showtrustlevels' non elenca nemmeno questo livello. È documentato da qualche parte? Non è menzionato nel seguente articolo, che menziona '0x20000': [Nuovi ACL migliorano la sicurezza in Windows Vista] (https://technet.microsoft.com/en-us/magazine/2007.06.acl.aspx). – eryksun

+0

@eryksun il mio errore, trustlevel! = Livello di integrità. Dall'articolo: "Come punto di interesse, il trustle 0x20000 ti fornisce un token con il set normale di SID ma i privilegi eliminati" –

+0

Ho letto l'articolo.Stavo chiedendo di '0x1000', che come ho detto imposta tutti i gruppi da negare (inclusa l'etichetta di integrità) tranne per i gruppi" Everyone "," Users "e" Authenticated Users ". L'ho trovato solo sperimentando. Non sembra essere documentato da nessuna parte. – eryksun

-4

in start-process esistono interruttore runas come

start-process powershell -verb runAs 

ma ancora UAC si controlla se nel vostro sistema UAC si deve prima di bypass UAC ci sono molti modo esistere per bypass UAC, ma tutti i modi non funziona in tutte le finestre come Windows 8 se si scrive lo script per il processo di esecuzione, allora compile to exe è possibile usare il programma come runasadmin per eseguire come amministratore vostro exe nel sistema, ma ancora non funziona in Windows 8

+2

Questo sembra essere l'esatto opposto della risposta desiderata della domanda. Come guida per 'Start-Process'" Il verbo RunAs avvia il processo con le autorizzazioni di un membro del gruppo Administrators sul computer, come se avvii Windows PowerShell con l'opzione "Esegui come amministratore". " –

2

Quando si analizza questo problema, come menzionato dalle attività collegate, non è possibile eseguire un processo non elevato "non" da un processo elevato. Poiché questo è esattamente ciò che ho richiesto e la soluzione runas non ha funzionato per me, ho convertito la soluzione alternativa al codice fornita da Microsoft per utilizzare un'attività pianificata per avviare un processo non "elevato".

Esempio di esecuzione powershell.exe come un processo "non" elevata da un prompt PowerShell con privilegi elevati:

$apppath = "powershell.exe" 
$taskname = "Launch $apppath" 
$action = New-ScheduledTaskAction -Execute $apppath 
$trigger = New-ScheduledTaskTrigger -Once -At (Get-Date) 
Register-ScheduledTask -Action $action -Trigger $trigger -TaskName $taskname | Out-Null 
Start-ScheduledTask -TaskName $taskname 
Start-Sleep -s 1 
Unregister-ScheduledTask -TaskName $taskname -Confirm:$false 

È possibile che questo comandi PowerShell funziona solo su Windows Server 2012/Windows 8 e una maggiore solo.

oppure è possibile utilizzare l'applicazione SCHTASKS.EXE invece di coprire la maggior parte delle versioni di Windows:

$apppath = "powershell.exe" 
$taskname = "Launch $apppath" 
schtasks /create /SC ONCE /ST 23:59 /TN $taskname /TR $apppath 
schtasks /run /tn $taskname 
Start-Sleep -s 1 
schtasks /delete /tn $taskname /F 
+0

Questo approccio è apparentemente più approfondito (non interferisce con le scorciatoie della mia app screenshot, quando è attiva la nuova finestra). – Vimes

+0

Per eseguire un'attività con alimentazione a batteria, ho aggiunto un argomento Register-ScheduledTask: '-settings (New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries)' – Vimes

Problemi correlati