ASP.net Powershell Script ausführen
Hallo,
Ich habe ein Powershell Script geschrieben, was einen AD User erstellt, mit einem Random Passwort versieht und dann eine email an den beantrager zusendet (soll).
Möchte folgendes Scenario realisieren, der User geht auf eine Seite im Intranet und beantragt per "Button" Klick, die erstellung des AD Users. Es wird im hintergrund jede beantragung gelogt.
Nun hab ich aber das Problem, das mit dem Button klick einfach nichts passiert. Ich vermue, das dem IIS7 einfach die passenden Berechtigungen fehlen, für die ausführung.
Wäre für ein Tipp, der das Problem beseitigt, sehr dankbar.
Gruß
Ich habe ein Powershell Script geschrieben, was einen AD User erstellt, mit einem Random Passwort versieht und dann eine email an den beantrager zusendet (soll).
Möchte folgendes Scenario realisieren, der User geht auf eine Seite im Intranet und beantragt per "Button" Klick, die erstellung des AD Users. Es wird im hintergrund jede beantragung gelogt.
Nun hab ich aber das Problem, das mit dem Button klick einfach nichts passiert. Ich vermue, das dem IIS7 einfach die passenden Berechtigungen fehlen, für die ausführung.
Wäre für ein Tipp, der das Problem beseitigt, sehr dankbar.
Gruß
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 231503
Url: https://administrator.de/contentid/231503
Ausgedruckt am: 25.11.2024 um 18:11 Uhr
10 Kommentare
Neuester Kommentar
Hi,
Schau dazu hier mal rein:
Powershell Skripte über URL für andere Benutzer zugänglich machen
und für die Berechtigungen hier:
http://forums.asp.net/t/1552331.aspx?How+to+create+a+flipcart+like+pane ...
Der Account mit dem der IIS ausgeführt wird muss entweder selber das Recht haben Konten zu erstellen, oder besser du legst einen AppPool im IIS an, der mit einem User-Account läuft der die entsprechenden Rechte für dein Script besitzt:
http://forums.asp.net/t/1552331.aspx?How+to+create+a+flipcart+like+pane ...
Jetzt laufen die Seiten unter diesem Alias im Kontext des vorhin ausgewählten Useraccounts, und dein Script sollte problemlos durchlaufen.
Grüße Uwe
Schau dazu hier mal rein:
Powershell Skripte über URL für andere Benutzer zugänglich machen
und für die Berechtigungen hier:
http://forums.asp.net/t/1552331.aspx?How+to+create+a+flipcart+like+pane ...
Der Account mit dem der IIS ausgeführt wird muss entweder selber das Recht haben Konten zu erstellen, oder besser du legst einen AppPool im IIS an, der mit einem User-Account läuft der die entsprechenden Rechte für dein Script besitzt:
http://forums.asp.net/t/1552331.aspx?How+to+create+a+flipcart+like+pane ...
Erstellen eines benutzerdefinierten Anwendungspools im IIS
Dazu gehst du in den IIS unter Anwendungspools > Anwendungspool hinzufügen und gibst Ihm einen Namen. Dann wählst du im Kontextmenü des Pools Erweiterte Einstellungen und im Dialog gibst du unter Identität einen Benutzeraccount inklusive Passwort an der deine benötigten Rechte besitzt. Dann legst du noch die Option Benutzerprofil laden auf True fest. Dann schließt du den Dialog mit OK. Jetzt musst du den Pool einer neuen Anwendung im IIS zuweisen. Dazu öffnest du das Kontextmenü deiner Website und wählst Anwendung hinzufügen. Dort vergibst du einen Alias-Namen unter dem das Verzeichnis später erreichbar ist und wählst den physikalischen Pfad zu deinen ASP.Net Seiten aus; und jetzt wichtig, musst du deinen gerade erstellen Anwendungspool auswählen.Jetzt laufen die Seiten unter diesem Alias im Kontext des vorhin ausgewählten Useraccounts, und dein Script sollte problemlos durchlaufen.
Grüße Uwe
sorry das war mir noch nicht klar
Hier geht es testweise einwandfrei.
und bau in dein Script zu Debug-Zwecken mal eine Zeile ein die dir den aktuellen User im Powershell-Script in eine Datei schreibt:
so kannst du überprüfen mit welchem Account das Script ausgeführt wird.
default.aspx?action=deleteCache aufrufe
auch über den benutzerdefinierten Alias-Pfad deiner Anwendung aufgerufen ?Der AppPool ist mit einem Administrator angelegt. so wie du es oben, sehr gut beschrieben hast.
Kann ich die identity auch über die Domäne machen? Also testdomaene\Administrator?
Normalerweise ja. Setze in den Eigenschaften des App-Pools auch noch die Option Benutzerprofil laden das hatte ich vergessen.Kann ich die identity auch über die Domäne machen? Also testdomaene\Administrator?
Hier geht es testweise einwandfrei.
und bau in dein Script zu Debug-Zwecken mal eine Zeile ein die dir den aktuellen User im Powershell-Script in eine Datei schreibt:
echo $env:Username | out-file "C:\powershell_user.txt"
Zitat von @markthom87:
Hmm,
Der Fehler scheint irgendwo anders zu liegen. Meine App heißt "testasp" also ist der aufruf komplett wie folgt
http://localhost:1337/testasp/default.aspx?action=deleteCache
Die Seite gibt mir aus, dass das VB-Script gelaufen ist. Dadurch das dort steht Script 'deleteCache' wurde
ausgeführt.
Aber ich hab das Gefühl der Fehler liegt wo anders.
WEIL! ändere ich im vb-script das ausführ Kommando also "deleteCache" auf "adminCreate" funktioniert
das Script nicht mehr.
Bekomme auch keine Rückmeldung mehr. Gebe ich allerdings weiterhin, das "deleteCache" ein spult er immer das selbe
runter.
Kann es also sein, das der Browser vielleicht noch chached? Obwohl ich den gelöscht habe?
das hat mit Caching nichts zu tun, die Abfrage kannst du komplett rauswerfen das war nur für den Anwendungsfall im anderen Thread relevant, die Namen habe nichts mit dem Browsercaching zu tun !!Hmm,
Der Fehler scheint irgendwo anders zu liegen. Meine App heißt "testasp" also ist der aufruf komplett wie folgt
http://localhost:1337/testasp/default.aspx?action=deleteCache
Die Seite gibt mir aus, dass das VB-Script gelaufen ist. Dadurch das dort steht Script 'deleteCache' wurde
ausgeführt.
Aber ich hab das Gefühl der Fehler liegt wo anders.
WEIL! ändere ich im vb-script das ausführ Kommando also "deleteCache" auf "adminCreate" funktioniert
das Script nicht mehr.
Bekomme auch keine Rückmeldung mehr. Gebe ich allerdings weiterhin, das "deleteCache" ein spult er immer das selbe
runter.
Kann es also sein, das der Browser vielleicht noch chached? Obwohl ich den gelöscht habe?
Das hier reicht zur Ausführung:
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
Dim newproc As Process
newproc = Process.Start("powershell.exe", "-NonInteractive -File ""C:\powershellASP\Scripts\testadmin.ps1""")
newproc.WaitForExit()
Response.Write("Script '" & action & "' wurde ausgeführt")
End Sub
End Class
Für Entwicklungszwecke:
http://forums.iis.net/t/959070.aspx?How+do+you+disable+caching+in+IIS+
Das ist aber nicht Thema hier...mach dafür einen neuen Thread auf...Danke.
Grüße Uwe
http://forums.iis.net/t/959070.aspx?How+do+you+disable+caching+in+IIS+
Das ist aber nicht Thema hier...mach dafür einen neuen Thread auf...Danke.
Grüße Uwe