Wer seine Skripte hin und wieder gerne als Admin ausführen möchte bekommt mehrere Lösungen über die Suchmaschine. Allerdings bieten diese Lösungen nur halbwegs komfortable Lösungen.
Die Probleme über die ich gestolpert bin waren zB: Die normal geöffnete Powershellkonsole blieb offen, der Pfad war System32 usw..
Also begab ich mich auf die Suche nach einer Lösung, mit der ich ein Skript als Admin ausführen kann, ein neuer Prozess gestartet wird, der alte beendet und die Location in die geändert wird, in der sich das aktuell ausgeführte Skript befindet.
function Check-Admin { $currentUser = New-Object Security.Principal.WindowsPrincipal $([Security.Principal.WindowsIdentity]::GetCurrent()) $currentUser.IsInRole([Security.Principal.WindowsBuiltinRole]::Administrator) } if ((Check-Admin) -eq $false) { Start-Process powershell.exe -Verb RunAs -ArgumentList ('-noprofile -noexit -file "{0}" -elevated' -f ($myinvocation.MyCommand.Definition)) Stop-Process -Id $PID } $scriptDirectory = Split-Path $MyInvocation.MyCommand.Path Set-Location $scriptDirectory #Enter Code here.
Super Lösung. Danke
Dann muss aber noch etwas mehr gemacht werden. Bei mir kommt:
Die Datei "C:\xxx.ps1" kann nicht geladen werden, da die Ausführung von
Skripts auf diesem System deaktiviert ist. Weitere Informationen finden Sie unter "about_Execution_Policies"
(https:/go.microsoft.com/fwlink/?LinkID=135170).
+ CategoryInfo : Sicherheitsfehler: (:) [], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : UnauthorizedAccess
Hallo,
Der Fehler wird nicht durch den Code verursacht.
Bitte lies dir die Erklärungen dazu über Skriptausführung in der Dokumentation durch
https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.security/set-executionpolicy?view=powershell-7.1
Als Admin die PShell starten und dann Set-ExecutionPolicy unrestricted setzen.