Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

ASP.net Powershell Script ausführen

Frage Entwicklung Webentwicklung

Mitglied: markthom87

markthom87 (Level 1) - Jetzt verbinden

03.03.2014 um 13:47 Uhr, 3693 Aufrufe, 10 Kommentare

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ß
Mitglied: colinardo
03.03.2014, aktualisiert 04.03.2014
Hi,
Schau dazu hier mal rein:
http://www.administrator.de/forum/powershell-skripte-über-url-f&uu ...

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
Bitte warten ..
Mitglied: markthom87
04.03.2014 um 15:24 Uhr
Vielen Dank Uwe, du hilfst mir sehr!

Mittlerweile glaube ich das es an meinem Script oder dem Aufruf liegt.
hab zwar den aufruf bei dir übernommen, aber es geht einfach nicht.

Hier mal meine VB datei
Imports System.Collections.ObjectModel
Imports System.Management.Automation
Imports System.Management.Automation.Runspaces
Imports System.Text
Imports System.IO
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:\powershellASP\Scripts\testadmin.ps1""")
newproc.WaitForExit()
Response.Write("Script '" & action & "' wurde ausgeführt")
End Select
End If
End Sub
End Class

Und hier mein Script

  1. testadmin.ps1

  1. Import the Active Directory Module for Powershell
import-module ac*


## Build String AccountExpirationDate
[int]$_hour = (Get-Date).Hour + 1
[string]$_hour = "{0:D2}" -f $_hour
[string]$_exMin = "{0:D2}" -f (Get-Date).Minute
[string]$_exDay = "{0:D2}" -f (Get-Date).Day
[string]$_exMonth = "{0:D2}" -f (Get-Date).Month
[string]$_exYear = "{0:D2}" -f (Get-Date).Year
[string]$_exDate = $_exYear + "-" + $_exMonth + "-" + $_exDay + "T" + $_hour + ":" + $_exMin + ":00.0000000"

## Length of Random User&Password String
[int]$Length = 10
## Set the chars who used for Creating Strings
$set = "aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ0123456789".ToCharArray()
## Create Random Admin User Login Name
[string]$_logonName = ""
for ($x = 0; $x -lt $Length; $x++) {
$_logonName += $set | Get-Random
}
## Create Random Admin User Password
[string]$_logonPW = ""
for ($x = 0; $x -lt $Length; $x++) {
$_logonPW += $set | Get-Random
}
## Convert _logonPW to a SecureString
$_secure = ConvertTo-SecureString -String $_logonPW -AsPlainText -Force
## Build PrincipalName for loginName
$_principalName = $_logonName + "@testdomaene.net"
## Create AD User
New-ADUser -Name $_logonName -UserPrincipalName $_principalName -DisplayName "AdminRequest" -AccountExpirationDate $_exDate -AccountPassword $_secure
Get-ADUser $_logonName | Move-ADObject -TargetPath 'OU=AdminRequest,DC=testdomaene,DC=net'
Add-ADGroupMember -Identity "Local admins" -Member $_logonName
Set-ADUser -Identity $_logonName -Enabled 1

<## Get Information about AccountExpirationDate
Get-ADUser -Properties AccountExpirationDate -Identity $_logonName
#>
## MailMessage Configuration and Body
$SMTPServer = "smtp.testdomaene.net"
$From = "AdminRequest@testdomaene.net"
$To = "tuser@testdomaene.net"
$Subject = "Your Admin Request"
$Body = @"

Login : $_logonName
Password : $_logonPW
Account Expiration : $_exDate
"@

Send-MailMessage -To $To -From $From -Subject $Subject -Body $Body -SmtpServer $SMTPServer -encoding ([System.Text.Encoding]::UTF8)
Bitte warten ..
Mitglied: colinardo
04.03.2014, aktualisiert um 15:34 Uhr
Kein Wunder wenn du den Code so einfach kopierst, denn in dem Code war eine Abfrage eines URL-Parameters eingebaut !!! Diese musst du natürlich rausnehmen...
und lege wie oben beschrieben den AppPool mit einem Admin-User an!
Bitte warten ..
Mitglied: markthom87
04.03.2014 um 15:39 Uhr
ich weiß das ich das powershell script mit

default.aspx?action=deleteCache aufrufe

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?
Bitte warten ..
Mitglied: colinardo
04.03.2014, aktualisiert um 16:01 Uhr
Zitat von markthom87:

ich weiß das ich das powershell script mit
sorry das war mir noch nicht klar
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.

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"
so kannst du überprüfen mit welchem Account das Script ausgeführt wird.
Bitte warten ..
Mitglied: markthom87
04.03.2014, aktualisiert um 16:38 Uhr
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?
Bitte warten ..
Mitglied: colinardo
04.03.2014, aktualisiert um 16:44 Uhr
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 !!

Das hier reicht zur Ausführung:
01.
Imports System.Diagnostics 
02.
Partial Class _Default 
03.
    Inherits System.Web.UI.Page 
04.
    Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load 
05.
          Dim newproc As Process 
06.
          newproc = Process.Start("powershell.exe", "-NonInteractive -File ""C:\powershellASP\Scripts\testadmin.ps1""") 
07.
          newproc.WaitForExit() 
08.
          Response.Write("Script '" & action & "' wurde ausgeführt") 
09.
    End Sub 
10.
End Class
ohne jetzt wirklich zu prüfen ob es tatsächlich richtig durchgelaufen ist....
Bitte warten ..
Mitglied: markthom87
05.03.2014 um 08:32 Uhr
Ich bin vermutlich falsch Verstanden worden.

Aber die Script änderung ist eine sehr gute möglichkeit um zu Demonstrieren was ich meine.

Die Ausgabe "Script ... wurde ausgeführt" erscheint auch nach der änderung erst wenn ich die URL mit anhang
default.aspx?action=deleteCache
eintippe.

Wenn ich ohne "action" eingebe erscheint überhaupt keine Ausgabe. Daher vermute ich das hier irgendwas falsch gecached wird.
Hab es auch mit dem Restart vom IIS probiert usw. Hoffe konnte den Fehler verständlich rüber bringen.
Bitte warten ..
Mitglied: markthom87
12.03.2014 um 08:32 Uhr
DER IIS Server aktualisiert einfach nicht die Daten. Das merkt man schon daran, das wenn ich nen anderes Template hochladen, das er immer noch das alte anzeigt. Kann mir nicht vorstellen, dass das so richtig ist und da überhaupt richtig gecached wird.

Keine Idee, was daran vielleicht falsch läuft?
Bitte warten ..
Mitglied: colinardo
12.03.2014 um 08:42 Uhr
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
Bitte warten ..
Neuester Wissensbeitrag
Festplatten, SSD, Raid

12TB written pro SSD in 2 Jahren mit RAID5 auf Hyper-VServer

Erfahrungsbericht von Lochkartenstanzer zum Thema Festplatten, SSD, Raid ...

Ähnliche Inhalte
VB for Applications
Powershell Script aus VBA heraus ausführen (2)

Frage von mcnico1978 zum Thema VB for Applications ...

Batch & Shell
gelöst Powershell-Script als Admin über CMD ausführen (2)

Frage von Tobiased zum Thema Batch & Shell ...

Batch & Shell
gelöst PowerShell Script Move-Item nach x Tagen (5)

Frage von lupolo zum Thema Batch & Shell ...

Batch & Shell
Windows Explorer hängt sich bei Powershell Script auf (5)

Frage von zamsi7 zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (34)

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
gelöst Server erkennt Client nicht wenn er ausserhalb des DHCP Pools liegt (28)

Frage von Mar-west zum Thema LAN, WAN, Wireless ...

LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (21)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Viren und Trojaner
Aufgepasst: Neue Ransomware Goldeneye verbreitet sich rasant (20)

Link von Penny.Cilin zum Thema Viren und Trojaner ...