daabm 1.366 Geschrieben 29. Oktober 2016 Melden Teilen Geschrieben 29. Oktober 2016 Na denn los: 'Malen' könntest Du das Menü mit Write-Host. Oder mit einem Here-String. Die Auswahl-Logik könnte Dir ein Switch-Statement bereitstellen. Die 'Sub-Scripte' könntest Du über Start-Process starten. Um Alles drumherum noch ein While-Loop, oder ein Do-Loop, wenn Du 'im Menü' bleiben möchtest Jetzt hast ihn aber gefordert BTW: Du bist auch im Technet, oder? Zitieren Link zu diesem Kommentar
Cybquest 36 Geschrieben 31. Oktober 2016 Melden Teilen Geschrieben 31. Oktober 2016 Soooo aufwändig und fehleranfällig ist ein einfaches Menü mit Buttons nun auch wieder nicht ;-) Kl. Beispiel: clear [void][Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms") $Form = New-Object System.Windows.Forms.Form $Form.width=250 $form.height=200 $Form.Text = "PS Formular" Function MakeButton([string]$btext,[int]$btop, [int]$bleft){ $btn = New-Object System.Windows.Forms.Button $btn.Text = $btext $btn.Top = $btop $btn.Left=$bleft $Form.Controls.Add($btn) return $btn } $btn1 = MakeButton "Notepad" 30 20 $btn1.Add_Click({ [Diagnostics.Process]::Start("notepad.exe") }) $btn2 = MakeButton "Cmd" 60 20 $btn2.Add_Click({ [Diagnostics.Process]::Start("cmd.exe") }) $btn3 = MakeButton "ENDE" 90 20 $btn3.Add_Click({ $Form.Close() }) $Form.ShowDialog() Zitieren Link zu diesem Kommentar
PowerShellAdmin 169 Geschrieben 31. Oktober 2016 Melden Teilen Geschrieben 31. Oktober 2016 (bearbeitet) Wenn dir (und deinem AG) viel an einer GUI liegt, dann kauf dir Powershell Studio https://www.sapien.com/software/powershell_studio Damit klickst du eine grafische Oberfläche (Fenster, Menü, Buttons) ganz einfach zusammen und hängst an die grafischen Objekte deine eigenen PS-Skripte. Am Ende kannst du dann eine *.exe aus dem PS-Code compilieren. Ich habe noch die Version von 2014, aber die ist auch schon sehr gut. blub Ja die Gui bei PS ist nicht sonderlich, auch die Gridausgabe ist mehr oder kaum brauchbar - Man kann leider keine Aktionen in der Grid hinterlegen. Im Regelfall reicht aber die Konsolenausgabe aus - auch wenn es nicht toll aussieht... Nachteilig (oder auch nicht) sehe ich dass du eine Anwendung aus dem Skript erzeugst, gerade wenn zügige Anpassungen gewünscht sind, ist das natürlich ungünstig. Im Regelfall soll die PS Vorgänge automatisieren und verarbeiten, als Ergebnis erhalte ich dann eher einen Report via Mail, DB Zugriffe, oder auch Flatfiles usw... Hier und da wäre eine Gui schick, aber wirklichen Bedarf hatte ich noch nicht. Für richtige Workflows würde ich eher auf eine passende Lösung setzen, wo dann vielleicht wieder die PowerShell im Hintergrund werkelt und dann z.B. als Job auf eine DB zugreift und entsprechende Benutzer anlegt usw... Ja .Net kann der PS hier und da den ars*** retten, manchmal ist aber ehrlichweise dann die PowerShell auch das falsche Werkzeug was man nutzt ;) bearbeitet 31. Oktober 2016 von PowerShellAdmin Zitieren Link zu diesem Kommentar
Robmantuto 1 Geschrieben 1. November 2016 Autor Melden Teilen Geschrieben 1. November 2016 (bearbeitet) @Cybquest Danke. Das ist ein nettes Script. Wie kann ich die Buttons vergrößern, falls ich einen längeren Text einsetzen will. Und wo setze ich z.B. Befehle ein, wenn ich z.B. unter Button 1 den Befehl: net user meinbenutzername /logonpasswordchg:no. einsetzen möchte? So vielleicht: $btn1.Add_Click({ [Diagnostics.Process]::net user meinbenutzername /logonpasswordchg:no @alle Ich würde gerne noch einen Button mit dem Befehl einsetzen, wo ich z.B. einen bestehenden User umbenennen kann. Der alte Username steht bereits fest, der neue soll aus 10 Namen ausgefählt werden. Abfolge wäre: Usernamen ändern Button. Dann kommt die Abfrage: Welcher Name soll es sein? Auswahl der Namen: while(($inp = Read-Host -Prompt "Wählen Sie einen Namen") -ne "Q"){ switch($inp){ 1 {"Befehl für Umbenennung auf User1"} 2 {"Befehl für Umbenennung auf User2"} 3 {"Befehl für Umbenennung auf User3"} 4 {"Befehl für Umbenennung auf User4"} default {"Ungültige Eingabe"} } } Wenn Eingabe erfolgt, dann wieder zurück zur Auswahl bzw. das Fenster wird geschlossen, das Menü mit der Auswahl bleibt die ganze Zeit bestehen. bearbeitet 1. November 2016 von Robmantuto Zitieren Link zu diesem Kommentar
BOfH_666 577 Geschrieben 1. November 2016 Melden Teilen Geschrieben 1. November 2016 Jetzt hast ihn aber gefordert BTW: Du bist auch im Technet, oder? Ich fürchte, ich hab ihn auch etwas überfordert. :eek: :schreck: :p Aber es gibt ja hier genug dienstbare Geister, die ihm das Nötigste abnehmen. :thumb1: BTW: ja. Zitieren Link zu diesem Kommentar
Cybquest 36 Geschrieben 2. November 2016 Melden Teilen Geschrieben 2. November 2016 (bearbeitet) Wie kann ich die Buttons vergrößern, falls ich einen längeren Text einsetzen will. Ebenso wie es $Form.width gibt, gibt es auch $btn.width :) Für Deine Userauswahl könntest Du ebenso ein neues Fenster erzeugen mit 10 neuen Buttons. ... oder einer Combobox. bearbeitet 2. November 2016 von Cybquest Zitieren Link zu diesem Kommentar
Robmantuto 1 Geschrieben 2. November 2016 Autor Melden Teilen Geschrieben 2. November 2016 @Cybquest Danke, damit kann es ich anpassen. Zitieren Link zu diesem Kommentar
magheinz 110 Geschrieben 2. November 2016 Melden Teilen Geschrieben 2. November 2016 Nur so als unqualifizierter Einwurf: Oft gibt es ja ein Namenschema an das man sich halten sollte/muss. Falls das hier auch der Fall ist könnte man ja statt einer freien Namenswahl versuchen damit zu arbeiten. Falls nicht ist es eventuell eine Überlegung wert den Namen in der Länge zu begrenzen. Zitieren Link zu diesem Kommentar
Robmantuto 1 Geschrieben 2. November 2016 Autor Melden Teilen Geschrieben 2. November 2016 (bearbeitet) Habe noch eine Frage zu dem Button-Script. Wie führe ich anderes .ps1-Script per Button aus? Bekomme es irgendwie nicht hin. habe es mit powershell -command versucht, klappt aber nicht. Beispiel [Diagnostics.Process]::Start('C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe','"d:\Sciptpfad\meinscript.ps1"') bearbeitet 2. November 2016 von Robmantuto Zitieren Link zu diesem Kommentar
Cybquest 36 Geschrieben 2. November 2016 Melden Teilen Geschrieben 2. November 2016 [Diagnostics.Process]::Start("powershell.exe",".\MeinScript.ps1") Zitieren Link zu diesem Kommentar
Robmantuto 1 Geschrieben 2. November 2016 Autor Melden Teilen Geschrieben 2. November 2016 (bearbeitet) Leider nicht, da taucht nur kurz das cmd-Fenster auf und dann schließt es sich wieder. bearbeitet 2. November 2016 von Robmantuto Zitieren Link zu diesem Kommentar
Cybquest 36 Geschrieben 2. November 2016 Melden Teilen Geschrieben 2. November 2016 Bei mir tuts. Tut denn das aufgerufene Script überhaupt? ... die Frage wäre ausserdem: Warum? Wozu? Du kannst doch alles in ein Script einbauen! Machst halt weitere Functions und rufst die auf. Ebenso kann ein weiteres Formular mittels New-Object erzeugt werden etc. Zitieren Link zu diesem Kommentar
Robmantuto 1 Geschrieben 2. November 2016 Autor Melden Teilen Geschrieben 2. November 2016 Ich möchte mit dem einen Klick den Computernamen umbenennen, jedoch würde ich das in einem neuen Fenster tun. Dort werde ich gefragt, wie der Computer heissen soll. Das alles ist einer .ps1 Datei gespeichert. Natürlich könnte man es in einem Script packen, aber ich würde es gerne so machen. Und ja, wenn ich mein Script separat starte, dann geht es, nur über den Button geht es nicht obwohl auf die Datei verwiesen. Zitieren Link zu diesem Kommentar
Cybquest 36 Geschrieben 2. November 2016 Melden Teilen Geschrieben 2. November 2016 Verwendest Du für's aufzurufende Script einen relativen Pfad? Wenn die Datei im selben Pfad liegt, muss dennoch das .\ davor! Zitieren Link zu diesem Kommentar
Robmantuto 1 Geschrieben 3. November 2016 Autor Melden Teilen Geschrieben 3. November 2016 Ja, habe ich gemacht und wie gesagt, kurz schwarzes Fenster. Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.