Benutzereingaben durch PowerShell-Skript simulieren

mentouu

Cadet 4th Year
Registriert
Aug. 2015
Beiträge
64
Hallo,

ich möchte ein Skript für Cisco Switche schreiben. Dieses soll die Switch-Grundkonfiguration für jeden Switch meiner Firma übernehmen, da für mich ansonsten eine Grundkonfiguration auf mehr als 50 Switchen ansteht.

Ich bin nun bei dem Problem, dass ich nicht weiß, wie man in einem PowerShell-Skript Benutzereingaben "simuliert" bzw. automatisiert. Im Cisco iOS ist es so, dass bei jedem Befehl die Eingabetaste (Enter) gedrückt werden muss, um eine Änderung vorzunehmen.
Da das Skript für mich die Konfiguration übernehmen soll, muss ich eine Möglichkeit finden, nach jedem abgearbeiteten Befehl eine Bestätigung (mittels simulierten Enters) abzusetzen.
Zum Beispiel muss für den Zugang in den Enable-Modus ein Passwort eingegeben und mit Enter bestätigt werden.

Mein Wissen im Scripting mit der PowerShell ist nicht sehr ausgeprägt, deswegen frage ich hier im Forum.
 
Ich weiß nicht ob es dir hilft, aber schauen wir mal :)

Es gibt im .NET Framework die Methode SendKeys.Send. Diese könntest du in Powershell wie folgt benutzen:

Code:
[System.Windows.Forms.SendKeys]::SendWait("{ENTER}")
 
Vorsicht, Halbwissen meinerseits:
Ich habe es damals durch vbs Skripte gelöst. Wir haben damit ein Hyperterminal geöffnet, Verbindung entsprechend hergestellt, die Eingaben getätigt, abgespeichert, fertig. Z.B. ham wir damit per Skript einen Port hoch oder runter gefahren. Ist aber alles schon lange her und war "damals" unter Server 2003. Es hat auch überwiegend ein Kollege geskriptet, und ich habe nur ein paar Anpassungen gemacht. Deswegen kann ich leider nicht konkreter werden. Nur so als Gedankenanstoß.
 
Knalltuete schrieb:
Ich weiß nicht ob es dir hilft, aber schauen wir mal :)

Es gibt im .NET Framework die Methode SendKeys.Send. Diese könntest du in Powershell wie folgt benutzen:

Code:
[System.Windows.Forms.SendKeys]::SendWait("{ENTER}")

funktioniert leider nicht. Danke trotzdem :)
 
Funktioniert der Befehl nicht oder macht das Skript nicht was du willst?
Welche Powershell Version und welches .NET Framework hast du denn installiert?

Code:
$PSVersionTable.PSVersion
$PSVersionTable.CLRVersion
 
Knalltuete schrieb:
Funktioniert der Befehl nicht oder macht das Skript nicht was du willst?
Welche Powershell Version und welches .NET Framework hast du denn installiert?

Code:
$PSVersionTable.PSVersion
$PSVersionTable.CLRVersion

Ausgabe zu erstem Befehl:
Major: 2; Minor:0; Build: -1; Revision: -1

Ausgabe zu zweitem Befehl:
Major: 2; Minor: 0; Build 50727; Revision 5485

Habe mich über ein Login-Skript an einem Switch angemeldet, wollte über ein weiteres Skript in den Enable-Modus und bekam folgende Fehlermeldung: Line has invalid autocommand "enable [System.Windows.Forms.SendKeys]::SendWait("{ENTER}")"
 
Knalltuete schrieb:
Klingt als hättest du den Befehl direkt an den Cisco Switch übergeben, welcher damit logischerweise nichts anfangen kann..

Ich habe aber noch folgenden Artikel gefunden, welcher dir vielleicht weiterhilft?

http://www.xpresslearn.net/cisco/general/automate-cisco-commands-from-windows/

Das wäre eine Lösung, wenn ich nur wenige Switche zu verwalten hätte. Leider sind es aber Viele. Ich müsste eine Lösung finden, die funktioniert, ohne mich vorher auf jeden einzelnen Switch geschaltet zu haben.
 
Zurück
Oben