Zum Inhalt wechseln


Foto

Computernamen per Powershell vergeben mit Abfrage

Windows 7

  • Bitte melde dich an um zu Antworten
33 Antworten in diesem Thema

#16 daabm

daabm

    Expert Member

  • 2.110 Beiträge

 

Geschrieben 29. Oktober 2016 - 16:35

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 smile.gifsmile.gifsmile.gif
BTW: Du bist auch im Technet, oder?

Greetings/Grüße, Martin

Mal ein gutes Buch über GPOs lesen? Oder ein kleines, aber feines Blog darüber?

Und wenn mir die IT mal auf die Nerven geht - coke bottle design refreshment (-:


#17 Cybquest

Cybquest

    Expert Member

  • 1.882 Beiträge

 

Geschrieben 31. Oktober 2016 - 09:09

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()


My name is Frank, you can say you to me.

#18 PowerShellAdmin

PowerShellAdmin

    Board Veteran

  • 1.135 Beiträge

 

Geschrieben 31. Oktober 2016 - 14:18

Wenn dir (und deinem AG) viel an einer GUI liegt, dann kauf dir Powershell Studio

https://www.sapien.c...wershell_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 von PowerShellAdmin, 31. Oktober 2016 - 14:20.

Möge die Macht der PS mit Dir sein.


#19 Robmantuto

Robmantuto

    Newbie

  • 57 Beiträge

 

Geschrieben 01. November 2016 - 10:51

@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 von Robmantuto, 01. November 2016 - 10:52.


#20 BOfH_666

BOfH_666

    Junior Member

  • 133 Beiträge

 

Geschrieben 01. November 2016 - 20:42

Jetzt hast ihn aber gefordert smile.gifsmile.gifsmile.gif
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.


live long and prosper!

PS:> (79,108,97,102|%{[char]$_})-join''

#21 Cybquest

Cybquest

    Expert Member

  • 1.882 Beiträge

 

Geschrieben 02. November 2016 - 08:08

 

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 von Cybquest, 02. November 2016 - 08:08.

My name is Frank, you can say you to me.

#22 Robmantuto

Robmantuto

    Newbie

  • 57 Beiträge

 

Geschrieben 02. November 2016 - 12:28

@Cybquest

Danke, damit kann es ich anpassen.



#23 magheinz

magheinz

    Newbie

  • 1.329 Beiträge

 

Geschrieben 02. November 2016 - 12:43

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.



#24 Robmantuto

Robmantuto

    Newbie

  • 57 Beiträge

 

Geschrieben 02. November 2016 - 15:20

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 von Robmantuto, 02. November 2016 - 15:43.


#25 Cybquest

Cybquest

    Expert Member

  • 1.882 Beiträge

 

Geschrieben 02. November 2016 - 15:42

 [Diagnostics.Process]::Start("powershell.exe",".\MeinScript.ps1")

My name is Frank, you can say you to me.

#26 Robmantuto

Robmantuto

    Newbie

  • 57 Beiträge

 

Geschrieben 02. November 2016 - 15:46

Leider nicht, da taucht nur kurz das cmd-Fenster auf und dann schließt es sich wieder.


Bearbeitet von Robmantuto, 02. November 2016 - 15:48.


#27 Cybquest

Cybquest

    Expert Member

  • 1.882 Beiträge

 

Geschrieben 02. November 2016 - 15:49

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.


My name is Frank, you can say you to me.

#28 Robmantuto

Robmantuto

    Newbie

  • 57 Beiträge

 

Geschrieben 02. November 2016 - 15:54

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.



#29 Cybquest

Cybquest

    Expert Member

  • 1.882 Beiträge

 

Geschrieben 02. November 2016 - 16:29

Verwendest Du für's aufzurufende Script einen relativen Pfad? Wenn die Datei im selben Pfad liegt, muss dennoch das .\ davor!


My name is Frank, you can say you to me.

#30 Robmantuto

Robmantuto

    Newbie

  • 57 Beiträge

 

Geschrieben 03. November 2016 - 08:06

Ja, habe ich gemacht und wie gesagt, kurz schwarzes Fenster.





Auch mit einem oder mehreren der folgenden Tags versehen: Windows 7