Der Grund dafür ist, dass dies nicht funktioniert, weil sich ein PowerShell-Skript sowohl in Bezug auf den Inhalt als auch auf die Art und Weise, wie Windows (standardmäßig) sie verarbeitet, sehr von einer Batchdatei unterscheidet.
Wenn Sie beispielsweise Write-Host $ENV:COMPUTERNAME
in eine PowerShell-Datei (.ps1) speichern und darauf doppelklicken, wird sie höchstwahrscheinlich in Notepad geöffnet!
Wenn Sie diesen einzeiligen PowerShell-Befehl wirklich in einer Batchdatei haben möchten, möchten Sie etwas powershell.exe -command "get-appxpackage *3dbuilder* | remove-appxpackage"
in der Batchdatei speichern. Sie sollten dann in der Lage sein, mit der rechten Maustaste auf die Batch-Datei zu klicken und "als Administrator ausführen", um die gewünschten Effekte zu erzielen.
Wenn dies nicht der Fall ist, können Sie - wenn Sie ein .ps1 PowerShell-Skript haben - über eine Batchdatei aufrufen PowerShell.exe -File C:\Folder\script.ps1
und es über eine Verwaltungsbefehlszeile ausführen.
Alternativ müssen Sie PowerShell (oder ISE) als Administrator öffnen und das Skript ausführen ( & C:\Folder\file.ps1
).
Schließlich können Sie mit dem -verb RunAs
Switch beim Aufrufen von PowerShell.exe versuchen, die Erhöhung zu erzwingen, oder Sie können den folgenden Skriptblock in Ihrem Skript verwenden, um eine Sitzung zu erhöhen (ggf. mit einer UAC-Eingabeaufforderung):
If (-NOT ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator")) { $arguments = "& '" + $myinvocation.mycommand.definition + "'" Start-Process powershell -Verb runAs -ArgumentList $arguments Break } ###My Script Code Goes Here and will be executed if I am an administrator!
Nebenbemerkung - Sie könnten den schrecklichen Weg der Neukonfiguration von Fenstern durchgehen, um PowerShell-Skripts in PowerShell zu öffnen, und / oder ein Windows-Kontextmenü hinzufügen, um in Powershell als Administrator ausgeführt zu werden.