Sono stato un membro di SO per un anno e questa è la mia prima domanda in assoluto!PSCredentials da utente corrente
Attualmente sto sviluppando un'applicazione WinForms in C# che richiama gli script di PowerShell. Non è progettato per essere un gestore completo di tutte le funzionalità di PowerShell, ma esegue semplicemente una piccola selezione di script con tipi di parametri semplici e pre-concordati.
Alcuni degli script richiedono autorizzazioni elevate per essere eseguiti correttamente. Nessun problema - sembra esserci almeno 2 modi per aggirare questo:
1. Impersonificazione. L'applicazione esegue l'autorizzazione e invoca powershell con queste credenziali. Ho riscontrato un problema all'inizio, in quanto l'utente rappresentato/elevato potrebbe non disporre delle autorizzazioni per invocare i comandi di PowerShell sul computer locale dell'utente, poiché la macchina locale potrebbe non avere l'ExecutionPolicy appropriato e l'utente elevato dovrebbe quindi accedere al Registro di sistema per modificare questo. Non ho influenza nel modificare i permessi. Che mi porta verso:
2. Credenziali come variabile. Semplice. Gli script hanno una variabile come ad esempio:
[PSCredential]$credential
che l'applicazione può fornire, chiedendo all'utente per il nome utente e la password per questo account.
La mia domanda è questa: c'è un modo per ottenere un oggetto PSCredential dall'utente attualmente loggato, come una sorta di impostazione predefinita per la mia app?
Non ho visto nulla per suggerire che questo può essere fatto, quindi se qualcuno può inondarmi sul perché questo è il caso, sarei felice di sentirlo. Sarebbe possibile forzare l'esecuzione dell'applicazione come amministratore, se questo è di aiuto.
Grazie per il vostro tempo.
Non è necessario l'accesso al Registro di sistema per modificare i criteri di esecuzione. Puoi lanciare PowerShell.eseguire una politica di esecuzione desiderata o inizializzare lo spazio di esecuzione di PowerShell ospitato con uno script che imposta la politica desiderata per l'ambito del processo. Non penso che ci sia un modo per ottenere una credenziale per l'utente corrente senza chiedere almeno una volta, perché è come ottenere la password dell'utente corrente. Tuttavia, è possibile richiedere e quindi archiviare le credenziali in un modulo crittografato. –
Grazie a @mikez. Penso che questo lo risolva - è la risposta migliore che otterrò, quindi sentitevi liberi di postarlo come risposta e lo accetterò. – ne1410s