Powershell Skripte über URL für andere Benutzer zugänglich machen
Hallo zusammen,
ich hofe ich habe diese Frage hier richtig plaziert.
Ich hab einige Powershell Skripte gebaut. Nun möchte ich diese anderen aus meinem Team zur Verfügung stellen. Ich dachte mir, es wäre mögllich ein Skript über eine einen Webserver für die Auführung bereit zu stellen.
Ich stelle mir das so vor. Jemand ruft eine Webseite auf (http:\\skriptserver\skript1) und dann fängt das Skript an zu laufen.
Das ist zum Beispiel ein Skript was auf allen DC und Linux DNS Servern den DNS Cache sofort löscht.
Das Ziel soll sein, das neimand groß Powershell lernen muss, sondern nur, wenn er die entsprechenden Rechte hat einen kurzen Link aufruft und dann alles von alleine losläuft.
ich hofe ich habe diese Frage hier richtig plaziert.
Ich hab einige Powershell Skripte gebaut. Nun möchte ich diese anderen aus meinem Team zur Verfügung stellen. Ich dachte mir, es wäre mögllich ein Skript über eine einen Webserver für die Auführung bereit zu stellen.
Ich stelle mir das so vor. Jemand ruft eine Webseite auf (http:\\skriptserver\skript1) und dann fängt das Skript an zu laufen.
Das ist zum Beispiel ein Skript was auf allen DC und Linux DNS Servern den DNS Cache sofort löscht.
Das Ziel soll sein, das neimand groß Powershell lernen muss, sondern nur, wenn er die entsprechenden Rechte hat einen kurzen Link aufruft und dann alles von alleine losläuft.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 221253
Url: https://administrator.de/contentid/221253
Ausgedruckt am: 22.11.2024 um 22:11 Uhr
10 Kommentare
Neuester Kommentar
Wenn das so ist, richte doch eine Freigabe ein, in der die Skripte liegen und gib den Usern eine Verknüpfung zu diesen Scripten.
Grüße
Exze
Grüße
Exze
Hallo stefan2012,
das könnte man z.B. mit einem PHP-Script so realisieren:
Dann ruft man z.B. eine Seite folgendermaßen auf um ein bestimmtes Script auszuführen:
man ändert dann einfach den 'action' Parameter für unterschiedliche Scripte. Und setzt im Script im Gegenzug für diese Action einen entsprechenden Powershell-Aufruf.
Aber bitte entsprechende Sicherheitsvorkehrungen für diese Seiten vornehmen, so dass sie nicht jeder aufrufen kann bzw. nur die autorisierten Personen!
Grüße Uwe
das könnte man z.B. mit einem PHP-Script so realisieren:
if (isset($_GET['action']) && $_GET['action'] !== ""){
$action = $_GET['action'];
switch ($action){
case 'deleteCache':
exec('powershell -NonInteractive -File "C:\Scripte\deleteCache.ps1"');
echo "Script '$action' wurde ausgeführt!";
break;
case 'changeSetting1':
exec('powershell -NonInteractive -File "C:\Scripte\changeSetting1.ps1"');
echo "Script '$action' wurde ausgeführt!";
break;
}
}
http://scriptserver/scripts.php?action=deleteCache
Aber bitte entsprechende Sicherheitsvorkehrungen für diese Seiten vornehmen, so dass sie nicht jeder aufrufen kann bzw. nur die autorisierten Personen!
Grüße Uwe
Das selbe Script lässt sich auch in ASP.Net-Seite umsetzen dann brauchst du keinen Apache und PHP
Grüße Uwe
Beispiel
Imports System.Diagnostics
Partial Class _Default
Inherits System.Web.UI.Page
Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load
If Request.QueryString("action") <> "" Then
Dim action As String = Request.QueryString("action")
Select Case action
Case "deleteCache"
Dim newproc As Process
newproc = Process.Start("powershell.exe", "-NonInteractive -File ""C:\Scripte\deleteCache.ps1""")
newproc.WaitForExit()
Response.Write("Script '" & action & "' wurde ausgeführt")
End Select
End If
End Sub
End Class
Grüße Uwe
Zitat von @stefan2012:
Hab auch erfolgreich eine Seite mit anzeiget. Leider kann ich mit deinem Code Fetzen nicht so viel anfangen.
Das ist ein Fetzen aus Visual StudioHab auch erfolgreich eine Seite mit anzeiget. Leider kann ich mit deinem Code Fetzen nicht so viel anfangen.
Wie baue ich das jetzt genau ein?
Also wenn deine Seite Default.aspx heißt erstellst du eine weitere Datei im gleichen Verzeichnis mit dem Namen Default.aspx.vb (Dies ist dann das CodeBehind-File mit der Programm-Logik) und kopierst den obigen Code dort hinein.Dann musst du noch folgende Zeile im Kopf deiner Default.aspx einfügen
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="_Default" %>
http://scriptserver/Default.aspx?action=deleteCache
Hier das ganze mal in einem Video zusammengefasst, bevor ich mich hier fusselich rede