Ich versuche, dieses Skript in PowerShell auszuführen. Ich habe das folgende Skript wie ps.ps1
auf meinem Desktop gespeichert .
$query = "SELECT * FROM Win32_DeviceChangeEvent WHERE EventType = 2"
Register-WMIEvent -Query $query -Action { invoke-item "C:\Program Files\abc.exe"}
Ich habe ein Batch-Skript erstellt, um dieses PowerShell-Skript auszuführen
@echo off
Powershell.exe set-executionpolicy remotesigned -File C:\Users\SE\Desktop\ps.ps1
pause
Aber ich bekomme diesen Fehler:
./
einem ausführbaren Flag unter Unix versehen werden müssen.Ich erkläre in meinem Blog-Beitrag hier, warum Sie ein PowerShell-Skript aus einer Batch-Datei aufrufen möchten und wie dies zu tun ist .
Dies ist im Grunde das, wonach Sie suchen:
Wenn Sie Ihr PowerShell-Skript als Administrator ausführen müssen, verwenden Sie Folgendes:
Anstatt den gesamten Pfad zum PowerShell-Skript fest zu codieren, empfehle ich, die Batchdatei und die PowerShell-Skriptdatei im selben Verzeichnis abzulegen, wie in meinem Blogbeitrag beschrieben.
quelle
PowerShell -NoProfile -ExecutionPolicy Bypass -Command "& {Start-Process PowerShell -ArgumentList '-NoProfile -ExecutionPolicy Bypass Invoke-WebRequest https://www.example.com/example.ics -OutFile C:\_my\script.ics' -Verb RunAs}";
oderpowershell -Command "Invoke-WebRequest https://www.example.com/example.ics -OutFile c:\_my\file.ics"
, oder verwende die Option -File, um dasselbe in einer .ps1-Datei zu tun, oder(New-Object Net.WebClient).DownloadFile
. Irgendwelche Ideen?Wenn Sie aus dem aktuellen Verzeichnis ohne einen vollständig qualifizierten Pfad ausführen möchten, können Sie Folgendes verwenden:
quelle
Wenn Sie eine Batchdatei ausführen, die PowerShell als Administrator aufruft, führen Sie sie besser so aus, um sich alle Probleme zu ersparen:
Es ist besser zu verwenden
Bypass
...quelle
Wenn Sie einige Skripte ausführen möchten, können Sie diese verwenden
Set-executionpolicy -ExecutionPolicy Unrestricted
und anschließend zurücksetzenSet-executionpolicy -ExecutionPolicy Default
.Beachten Sie, dass die Ausführungsrichtlinie nur überprüft wird, wenn Sie ihre Ausführung starten (oder so scheint es). Sie können also Jobs im Hintergrund ausführen und die Ausführungsrichtlinie sofort zurücksetzen.
quelle
Eine andere einfache Möglichkeit, ein ps-Skript aus dem Stapel auszuführen, besteht darin, es einfach zwischen den Zeichen ECHO und Redirection (> und >>) einzufügen. Beispiel:
Letzte Zeile löscht die erstellte temporäre Datei.
quelle
Wenn Ihr PowerShell-Anmeldeskript nach 5 Minuten (wie meines) auf einem 2012-Server ausgeführt wird, gibt es auf einem Server eine Gruppenrichtlinienobjekteinstellung: "Verzögerung des Anmeldeskripts konfigurieren". Die Standardeinstellung "Nicht konfiguriert" führt zu einer Verzögerung von 5 Minuten bevor Sie das Anmeldeskript ausführen.
quelle
Kleine Probe test.cmd
quelle