Mam plik wsadowy dla serwera telnet automatycznie, chcę zrobić to samo z PowerShell
Plik wsadowy o nazwie Script.bat:
:: Open a Telnet window
start telnet.exe 10.84.10.85
:: Run the script
cscript SendKeys.vbs
Plik poleceń o nazwie SendKeys.vbs:
set OBJECT=WScript.CreateObject("WScript.Shell")
WScript.sleep 1000
OBJECT.SendKeys "myPassword{ENTER}"
WScript.sleep 1000
OBJECT.SendKeys "7{ENTER}"
WScript.sleep 1000
OBJECT.SendKeys "1{ENTER}"
WScript.sleep 1000
OBJECT.SendKeys "{ENTER}"
WScript.sleep 1000
OBJECT.SendKeys "{ENTER}"
WScript.sleep 1000
OBJECT.SendKeys "Y{ENTER}"
WScript.sleep 3000
OBJECT.SendKeys ""
powershell
telnet
Yazan
źródło
źródło
start-process path\telnet.exe -argumentlist 10.84.10.85
uruchomić telnet,$obj = New-Object -com Wscript.Shell
stworzyć obiekt,$obj.SendKeys("x")
wysłać klucze,sleep -ms 1000
spaćOdpowiedzi:
Program PowerShell nie ma wbudowanej funkcji emulacji naciśnięć klawiszy.
Praktycznie masz dwie opcje: COM-Automation i Interop.
Podobnie jak w VB (S)) możesz stworzyć obiekt powłoki i SendKeys. Oto sposób, aby to zrobić w PowerShell.
Jeśli chcesz wysłać naciśnięcie klawisza do okna, musisz je najpierw aktywować:
Niektóre naciśnięcia klawiszy mają specjalne zmienne, takie jak ~ dla RETURN. Oto pełna lista.
Po aktywacji okna często trzeba odczekać sekundę, aż zacznie reagować, w przeciwnym razie wyśle klucz do okna programu PowerShell lub do nikąd. Metoda SendKeys hosta skryptów może być zawodna, ale na szczęście istnieje lepsze podejście.
Podobnie jak w języku C #, możesz użyć metody SendWait z .NET Framework w PowerShell.
Jeśli chcesz aktywować okno, możesz to zrobić w następujący sposób:
Do trybu uśpienia można użyć polecenia cmdlet Start-Sleep .
Jeśli chodzi o twój pierwotny problem, proponuję następujące rozwiązanie:
OSTRZEŻENIE: Zachowaj szczególną ostrożność, jeśli używasz tej metody do wysłania hasła, ponieważ aktywacja innego okna między wywołaniem AppActivate a wywołaniem SendKeys spowoduje wysłanie hasła do tego innego okna zwykłym tekstem (np. Ulubionego komunikatora)!
źródło
Zrobiłem trochę modyfikacji w skrypcie, mam listę serwerów IP, które mają to samo hasło i chcę automatycznie telnet listy i wysłać klucz do dezaktywacji lub aktywacji serwera FTP.
mój skrypt to:
źródło