worker26
Goto Top

PowerShell Datei mit Doppelklick als Admin ausführen

Guten Tag face-smile

Wie kann ich eine PowerShell Datei mit Doppelklick als Administrator ausführen?
Es geht darum, dass andere, welche dieses Programm Doppelklicken, es automatisch mit Adminrechten ausführen.

mfg
Worker26

Content-Key: 665319

Url: https://administrator.de/contentid/665319

Printed on: April 16, 2024 at 21:04 o'clock

Member: schicksal
schicksal Apr 01, 2021 at 08:25:21 (UTC)
Goto Top
Member: TK1987
Solution TK1987 Apr 01, 2021 updated at 08:45:22 (UTC)
Goto Top
Moin,

Powershell-Skripte ausführen geht am einfachsten folgendermaßen:

1) Datei als .ps1-Datei abspeichern.
2) Von der Datei eine Verknüpfung machen (Rechtsklick > kopieren und dann Rechtsklick > Verknüpfung einfügen)
3) In den Verknüpfungseigenschaften sollte bei "Ziel" bereits der Pfad zum ps1-Skript stehen. Vor diesem musst du noch powershell -EP ByPass -File ergänzen. Vollständig sollte die Zeile dann so aussehen:
powershell -EP ByPass -File "C:\Pfad\zum\Skript.ps1"
Zudem kannst du in den Eigenschaften unter Registerkarte Verknüpfung dann unter "Erweitert..." auch "Als Administrator ausführen" anhaken.
Ausgeführt wird dann immer die Verknüpfung

Gruß Thomas
Member: chkdsk
chkdsk Apr 01, 2021 at 08:38:23 (UTC)
Goto Top
Einfach an den Anfang deines Skripts einfügen
param([switch]$Elevated)

function Test-Admin {
    $currentUser = New-Object Security.Principal.WindowsPrincipal $([Security.Principal.WindowsIdentity]::GetCurrent())
    $currentUser.IsInRole([Security.Principal.WindowsBuiltinRole]::Administrator)
}

if ((Test-Admin) -eq $false)  {
    if ($elevated) {
        # tried to elevate, did not work, aborting
    } else {
        Start-Process powershell.exe -Verb RunAs -ArgumentList ('-noprofile -noexit -file "{0}" -elevated' -f ($myinvocation.MyCommand.Definition))  
    }
    exit
}

write-host "running with full privileges" -foreground "green"  
Member: Worker26
Worker26 Apr 01, 2021 at 08:51:00 (UTC)
Goto Top
Hi,
Wenn ich das mit der Verknüpfung mache, kommt immer noch der selbe Fehler.

Hacke ich "als Admin ausführen" in der Verknüpfung an, wird es nicht einmal ausgeführt. Dann schließt sich das Fenster direkt.

Gruß Worker26
unbenannt
Member: Worker26
Worker26 Apr 01, 2021 at 08:53:57 (UTC)
Goto Top
Hallo @chkdsk,

auch wenn ich das einfüge, schließt sich das Fenster direkt, nachdem ich akzeptiert habe das Änderungen vorgenommen werden dürfen.
Member: chkdsk
chkdsk Apr 01, 2021 at 08:55:17 (UTC)
Goto Top
Dann zeige doch mal deinen Code her, den du schon hast.
Member: Worker26
Worker26 Apr 01, 2021 at 08:58:24 (UTC)
Goto Top
param([switch]$Elevated)

function Test-Admin {
    $currentUser = New-Object Security.Principal.WindowsPrincipal $([Security.Principal.WindowsIdentity]::GetCurrent())
    $currentUser.IsInRole([Security.Principal.WindowsBuiltinRole]::Administrator)
}

if ((Test-Admin) -eq $false)  {
    if ($elevated) {
        # tried to elevate, did not work, aborting
    } else {
        Start-Process powershell.exe -Verb RunAs -ArgumentList ('-noprofile -noexit -file "{0}" -elevated' -f ($myinvocation.MyCommand.Definition))  
    }
    exit
}

write-host "running with full privileges" -foreground "green"  

$testverzeichnis = "C:\FLS"  
If (Test-Path $testverzeichnis)
{
    Write-Host -BackGroundColor Green "Die Datei $($testverzeichnis) existiert."  
    Remove-Item -Path $testverzeichnis -Recurse
    Write-Host -BackGroundColor Red "Ordner wurde gelöscht"  
}
copy-item -Path \\srv-fls\FLS_Vistour_Client -Destination C:\FLS\ -Recurse
Write-Host -BackGroundColor Green "FLS Ordner wurde erstellt!"  

$quelldatei = "C:\FLS\FLS*.exe"  
$quellordner = "C:\FLS"  
$zielpfad = "C:\Users\Public\Desktop"  

New-Item -Value $quelldatei -Path $zielpfad\FLS_Visitour.lnk -ItemType SymbolicLink
pause
Member: TK1987
TK1987 Apr 01, 2021 updated at 09:04:00 (UTC)
Goto Top
Zitat von @Worker26:
Hacke ich "als Admin ausführen" in der Verknüpfung an, wird es nicht einmal ausgeführt. Dann schließt sich das Fenster direkt.
Bist du dir denn sicher, das er das Skript nicht schließt, weil er schon fertig ist?

Ergänze im Verknüpfungsziel mal -NoExit, so bleibt das Fenster weiter geöffnet.
powershell -EP ByPass -NoExit -File "C:\Pfad\zum\Skript.ps1"  
Erscheint dort eine Fehlermeldung?
Member: chkdsk
chkdsk Apr 01, 2021 at 09:02:11 (UTC)
Goto Top
Dann kopiere mal deinen Code in die ISE und schau dir die Fehlermeldung an
Member: Worker26
Worker26 Apr 01, 2021 at 09:02:42 (UTC)
Goto Top
Das Fenster schließt sich leider trotzdem.
Ja, sonst würde ich eine Verknüpfung am Desktop haben, wenn es funktionieren würde.
Member: Worker26
Worker26 Apr 01, 2021 at 09:05:28 (UTC)
Goto Top
Ich führe den Code im ISE aus, dann kommt einfach nichts
unbenannt
Member: chkdsk
chkdsk Apr 01, 2021 at 09:10:27 (UTC)
Goto Top
Das ist aber nicht die ISE
Member: TK1987
Solution TK1987 Apr 01, 2021 at 09:11:02 (UTC)
Goto Top
Zitat von @Worker26:

Das Fenster schließt sich leider trotzdem.
Dann stimmt vermutlich der Pfad zum Skript nicht.
Machen wir es noch anders. Beim Verknüpfungsziel:
powershell -EP ByPass -NoExit -Command . "C:\Pfad\zum\Skript.ps1"  
Beachte auch den Punkt hinter -Command (Dot-Sourcing). Nun kann sich das Fenster definitiv nicht mehr schließen.
Welche Fehlermeldung kommt hier?
Member: Worker26
Worker26 Apr 01, 2021 at 09:20:23 (UTC)
Goto Top
Es kommt dies Fehlermeldung, jedoch befindet sich meine PowerShell Datei in diesem Ordner
unbenannt
Member: Worker26
Worker26 Apr 01, 2021 at 09:23:26 (UTC)
Goto Top
Das ist sie doch oder?
unbenannt
Member: TK1987
Solution TK1987 Apr 01, 2021 updated at 09:28:12 (UTC)
Goto Top
Damit ist schon mal klar, dass er die Datei bzw. den Pfad nicht findet.

Sind in dem Teil, den du unkenntlich gemacht hast, zufällig Dollarzeichen oder ähnliches vorhanden?
Ändere beim Pfad mal die Doubleqoutes auf Singlequotes ab.
Member: Worker26
Worker26 Apr 01, 2021 at 09:29:24 (UTC)
Goto Top
Nein, da steht nur mein Name.
Mit Singlequotes klappt es auch nicht face-sad
Member: Worker26
Worker26 Apr 01, 2021 at 09:36:20 (UTC)
Goto Top
Hab das Pfad Problem gefunden. Es handelt sich um einen UNC Pfad. Ich hab den Laufwerkbuchstaben durch das richtige ersetzt und nun klappts, danke für die Hilfe. Habt noch einen schönen Tag :D