Zum Inhalt wechseln


Foto

Computernamen per Powershell vergeben mit Abfrage

Windows 7

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

#31 Robmantuto

Robmantuto

    Newbie

  • 57 Beiträge

 

Geschrieben 09. November 2016 - 10:49

So habe ich es gemacht:
 
$btn4 = MakeButton "[4] Computernamen umbenennen"  100 50
$btn4.Add_Click({& 'E:\Skripte\03.A.Computernamen umbenennen.ps1'
})
 
Das Script, das gestartet wird:
Write-Output "---------------------"
Write-Output "Wählen Sie bitte aus";
Write-Output "---------------------"
Write-Output "Computer        (bei einem Computer-Rechner)";
Write-Output "Computer001-010 (bei mehreren Computern)";
Write-Output "---------------------"
[string]$Computername = Read-Host "Bitte geben Sie den Computernamen, der vergeben werden soll?"
Rename-Computer -NewName $Computername
Write-Output "_____________________________________________________";
Write-Output "Der Computername $Computername wurde zugewiesen."
Write-Output "_____________________________________________________";
Write-Output "Bitte führen Sie einen Neustart des Computers durch";
Write-Output "_____________________________________________________";
Start-Sleep -s 5
 
Mit dem absoluten Pfad funktioniert es. 
Zwei Probleme habe ich: Das Fenster des Computername-Umbenennen-Scriptes geht nicht von alleine zu, wenn ich es schliesse, schließt sich auch mein Auswahlfenster. Das möchte verhindern.
Zweites Problem: Die Write-Outputs werden nicht angezeigt, nur die Abfrage: "Bitte geben Sie den Computernamen, der vergeben werden soll?"
Starte ich das Script alleine, dann funktioniert es.
 
Eine andere Möglichkeit, wie hier schon erwähnt, wäre das separate Script in meinem Hauptscript einzubauen, leider weiß ich nicht wie ich unter AddClick einbauen soll. Einfügen des Inhalts hat nicht funktioniert.

Bearbeitet von Robmantuto, 09. November 2016 - 11:38.


#32 Cybquest

Cybquest

    Expert Member

  • 1.882 Beiträge

 

Geschrieben 09. November 2016 - 12:51   Lösung

Ich hätte gesagt, wenn schon mit Forms gearbeitet wird, dann alles ;-)

Bsp. für Dein "Problem":

clear
[void][Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")
$MainForm = New-Object System.Windows.Forms.Form
$MainForm.width=250
$MainForm.height=200
$MainForm.Text = "PS Testformular"

Function MakeButton($Form,[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
}

Function MakeTextbox($Form,[string]$tcaption,[int]$ttop,[int]$tleft) {
    $tbox = new-object System.Windows.Forms.Textbox
    $tblabel = new-object System.Windows.Forms.Label
    $tblabel.Text=$tcaption
    $tbox.Top = $ttop 
    $tbox.Left= $tleft
    $tblabel.Top = $ttop -25 
    $tblabel.Left= $tleft

    $Form.Controls.Add($tblabel)
    $Form.Controls.Add($tbox)
    return $tbox
}

Function RenComputer() {
    $SubForm = New-Object System.Windows.Forms.Form
    $SubForm.width=250
    $SubForm.height=200

    $myNewName = MakeTextbox $SubForm "Neuer Name:" 40 10

    $subbtn1 = MakeButton $SubForm "OK" 100 10
    $subbtn1.Add_Click({
       [System.Windows.Forms.MessageBox]::Show($myNewName.Text,"Rename to",0)
       # Rename-Computer -NewName $myNewName.Text
    })
    $subbtn2 = MakeButton $SubForm "Schliessen" 100 100
    $subbtn2.Add_Click({
        $SubForm.Close()
    })
    $SubForm.ShowDialog()
}

$btn1 = MakeButton $MainForm "Cmd" 30 10
$btn1.Add_Click({
  [Diagnostics.Process]::Start("cmd.exe")
})
$btn2 = MakeButton $MainForm "Rename" 60 10
$btn2.Add_Click({
  RenComputer
})
$btn3 = MakeButton $MainForm "ENDE" 120 10
$btn3.Add_Click({
  $MainForm.Close()
})

$MainForm.ShowDialog()

... musst im Prinzip "nur noch" das Kommentar-# vor "Rename-Comupter" weg machen :) ... und ggf. die "Messagebox"-Zeile rausharzen...


Bearbeitet von Cybquest, 09. November 2016 - 12:52.

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

#33 Robmantuto

Robmantuto

    Newbie

  • 57 Beiträge

 

Geschrieben 30. November 2016 - 15:11

Gibt es eine Möglichkeit zwei Befehle hintereinander mit einem Klick auszuführen? Z.B. einmal ein Programm starten und gleich danach etwas in die Registry eintragen oder ein anderes Programm starten.



#34 Cybquest

Cybquest

    Expert Member

  • 1.882 Beiträge

 

Geschrieben 30. November 2016 - 16:15

?!?... ist die Frage ernst gemeint?

 

$btnx.Add_Click({

  [Diagnostics.Process]::Start("cmd.exe")

  [Diagnostics.Process]::Start("notepad.exe")

  MeineCooleFunktion

 

 

})


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



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