Ich habe ein Powershell-Skript, das unter anderem Administratorrechte erfordert, um eine Azure-Dateifreigabe einzurichten. Der letzte Skriptbefehl dient New-PSDrive
dazu, die Dateifreigabe einem Laufwerksbuchstaben zuzuordnen. Ich gehe davon aus, dass der neue Laufwerksbuchstabe über den Windows Explorer zugänglich ist. Mir ist bewusst, dass die Verwendung New-PSDrive
aus einem erhöhten Kontext das Laufwerk nur in diesem Kontext zuordnet, sodass es für mein Benutzerkonto nicht verfügbar ist.
Wie führe ich als aktueller Benutzer ein Powershell-Skript/einen Powershell-Prozess aus einem Skript mit erhöhten Rechten aus?
Antwort1
Sie können den Benutzerkontext nicht ändern, ohne Benutzeranmeldeinformationen anzugeben. Sie können den angemeldeten Benutzer ganz einfach abrufen, aber Sie erhalten nie sein Kennwort, es sei denn, er gibt es ein.
Invoke-Command -FilePath "yourPath\yourScript.ps1" -ComputerName yourServer -Credential Get-Credential
Zweitens würde der Benutzer dies bei einer Remote-Ausführung nie sehen, da es nur in dem ursprünglichen Kontext ausgeführt werden kann, in dem Sie sich befinden.
PowerShell erlaubt Ihnen dies nicht nativ, da es sich um eine Windows-Sicherheitsgrenze handelt. Wenn Sie dies wirklich tun müssen, verwenden Sie MS SysInternals PSExec.
Oder versuchen Sie, Dinge in einer geplanten Aufgabe zu erledigen.
Antwort2
Ich habe das völlig falsch verstanden, da ich standardmäßig alles als Administrator ausführe. Ich habe das Skript in zwei separate Skripte aufgeteilt, eines für Code, der Administratorrechte erfordert, und eines, das Benutzerrechte erfordert. Ich rufe das Skript mit Benutzerrechten auf, das prüft und Fehler ausgibt, wenn es sich im Administratorkontext befindet. Dann kann ich das Administratorskript vom Benutzerskript in seiner eigenen Eingabeaufforderung mit erhöhten Rechten ausführen, warten und bin wieder im Benutzerkontext.