Ho uno script (chiamiamolo myPSScript.ps1) che accetta due parametri ed esegue passaggi predefiniti. Lo script si trova in una casella di Windows Server che le persone accedono ed eseguono lo script. Supporta due utenti per accedere al momento specifico.PowerShell - Trova l'utente che ha invocato lo script
Voglio scoprire chi ha invocato la sceneggiatura.
(Get-WmiObject -Class Win32_Process | Where-Object {$_.ProcessName -eq 'explorer.exe'}).GetOwner() | Format-Table Domain, User
Questo funziona quando l'utente è attualmente connesso e sta tentando di eseguire lo script. Ma cosa succede se ho un file batch in attività pianificate ed eseguo lo stesso script?
In tal caso lo stesso comando restituisce un'eccezione nulla, poiché non vi è nessuno registrato nella macchina.
C'è un modo per scoprire chi/quale processo ha richiamato lo script di PowerShell. Ricordo vagamente i record Start-Transcript su quale utente viene eseguito il comando da etc, quindi dovrebbe essere possibile?
Grazie! Sanjeev
Perfetto. Questo funziona anche quando lo script viene attivato utilizzando Invoke-Command da una macchina diversa e da diversi utenti - che è esattamente quello che stavo cercando. Ora posso controllare chi fa cosa e quando :) – Sanjeev
Un altro problema. Diciamo che una persona è registrata su un server Windows usando un utente del dominio. In tal caso lo script ci fornisce l'utente del dominio, ma ciò non è utile quando è utilizzato da più di una persona. Terminal Service Manager mostra il nome del cliente, che è il nome del client da cui la persona ha effettuato la connessione. C'è un modo per ottenere queste informazioni? – Sanjeev
L'utilizzo del modulo PSTerminalServices è una delle opzioni per ottenere tali informazioni. – Sanjeev