Ich habe gelesen, wie eine Datei zur Bearbeitung im Administratormodus geöffnet wird.
Ich habe eine .ps1-Datei, die als Administrator ausgeführt werden muss. Ich bin froh, dass Powershell als Administrator ausgeführt wird, wenn ich auf eine .ps1-Datei doppelklicke.
Ich habe C:\Users\me\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Windows PowerShell
beide PowerShell-Verknüpfungen als Administrator ausgeführt
Wenn ich Powershell über das Startmenü öffne, werde ich gefragt, ob ich zulassen möchte, dass die App Änderungen vornimmt. Dies zeigt, dass sie als Admin ausgeführt wird. Wenn Powershell ausgeführt wird, wird Administrator in der Titelleiste angezeigt
Wenn ich jedoch auf eine .ps1-Datei doppelklicke, wird sie als normaler Benutzer (nicht als Administrator) geöffnet.
Was muss ich sonst noch tun?
quelle
if (([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator")) -eq $false){Start-Process powershell -ArgumentList "-NoProfile -ExecutionPolicy Bypass" -Verb RunAs; Exit;}
in Ihr Skript einbinden$Profile
- aus irgendeinem GrundExit
funktioniert dies jedoch nicht. Daher bleibt das ursprüngliche Nicht-Admin-Terminal geöffnet .)Antworten:
Dadurch wird das Skript nicht ausgeführt werden, wenn Sie darauf doppelklicken, aber das wird sich als ausführen erhöht , wenn Sie es starten. Sie können dies versuchen:
Damit wird die nicht erhöhte Konsole beendet.
quelle
.ps1 ist standardmäßig mit Notepad.exe verknüpft. Ein Doppelklick öffnet einfach die .ps1 im Editor zur Überprüfung oder Bearbeitung. Dies war eine bewusste Sicherheitsentscheidung der MS.
Natürlich können Sie diese Zuordnung in powershell.exe ändern, aber Sie setzen sich auch unnötigen Risiken aus. Wenn es sich um ein Unternehmen handelt, hat Ihr Sicherheitsteam möglicherweise Worte für Sie, oder dies könnte zum RPE (Resume Producing Event) werden.
Das alles gesagt. Es spielt keine Rolle, was Sie mit den Verknüpfungen tun, so würde ein Doppelklick nicht funktionieren.
Doppelklick, startet keine Verknüpfung, startet mit der zugehörigen App, in dem Fall ...
Wenn Sie Skripte haben, für die Administratorrechte erforderlich sind, oder die Sie als Administrator ausführen möchten, müssen Sie im Skript Code eingeben, um sie als Administrator neu zu starten, sofern sie nicht auf diese Weise gestartet wurden. Das bedeutet, dass Sie in einer neuen PoSH-Sitzung landen, die der von Ihnen gestarteten entspricht, und dies ist beabsichtigt.
Das Ändern der Dateizuordnung in "Automatisch ausführen" ist nur eine schlechte Praxis und unterliegt denselben Risiken wie in früheren .vbscript-Tagen.
quelle
Kopieren Sie die PowerShell-Verknüpfung, und fügen Sie sie an der Stelle ein, an der Sie das Skript starten möchten. Klicken Sie mit der rechten Maustaste auf die neue Verknüpfung, klicken Sie auf Eigenschaften und anschließend auf Erweitert, und stellen Sie sicher, dass sie als Administrator ausgeführt wird. Geben Sie dann im Feld Ziel den Pfad und den Namen des Skripts nach powershell.exe ein
Stellen Sie sicher, dass Sie "Anführungszeichen" um Ihren Zusatz verwenden, wenn der Pfad oder der Dateiname Leerzeichen wie folgt enthält:
Dies startet eine neue Powershell als Administrator und startet das Skript automatisch in der neuen Shell.
Möglicherweise möchten Sie die Verknüpfung auch umbenennen, um anzuzeigen, dass es sich um ein bestimmtes Skript handelt, anstatt um eine reguläre Powershell-Sitzung. Rechtsklick, umbenennen.
quelle
Erläuterung
Windows lässt die native Ausführung von PowerShell-Skripts nicht zu. Sie müssen die Ausführungsrichtlinie aktualisieren, damit der Benutzer oder ein ausgewählter Benutzer sie verwenden kann.
Antworten
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
Geben Sie ein
Get-Execution -List
, um alle Ausführungsrichtlinien anzuzeigenWenn dies immer noch nicht funktioniert, können Sie Windows PowerShell ISE verwenden, bei dem es sich um die PowerShell-IDE handelt
Oder öffnen Sie einfach zuerst ISE.
Sicherheit
Microsoft erlaubt Ihnen aus Sicherheitsgründen nicht , standardmäßig PowerShell-Skripte auszuführen. Es könnte leicht sein, dass jemand ein Skript auf Ihrem Computer ausführt und vollen Zugriff hat ! Um dies zu vermeiden, setzen Sie Ihre Ausführungsrichtlinie auf den ursprünglichen Wert zurück.
Microsoft-Dokumentation
quelle