我实习,我必须编写一个powershell脚本来自动化telnet脚本连接。 我用cmd做,我发送按键来连接如下:
$cmd = 'C:\Windows\System32\cmd.exe'
Start-Process $cmd -Verb runAs
$wshell = New-Object -ComObject wscript.shell;
$wshell.AppActivate($cmd)
Sleep 3
$wshell.SendKeys('telnet IP_ADDRESS')
它工作正常!但我有一个问题......
我必须以隐藏的样式运行cmd窗口,所以我这样做了:
Start-Process $cmd -Verb runAs -Windowstyle hidden
$wshell = New-Object -ComObject wscript.shell;
$wshell.AppActivate($cmd)
Sleep 3
$wshell.SendKeys('telnet IP_ADDRESS')
隐藏式样式的窗口启动,没关系,但键盘按键不会进入隐藏的cmd窗口
有人有解决方案吗?
答案 0 :(得分:0)
问题是你使用SendKeys,它只是模拟键盘上的按键。如果没有窗口,则无需将按键发送到。
Start-Process $cmd -ArgumentList "/K telnet IP_ADDRESS" -Verb runAs -Windowstyle hidden
这只是告诉CMD在打开时运行指定的命令,应该这样做。
答案 1 :(得分:0)
您可以使用Putty进行远程登录。 Plink是Putty的命令行版本,它在命令行上接受密码。不幸的是,telnet协议(与SSH不同)没有用于发送密码的标准化机制。但是你可以输入Plink的标准输入。所以你可以将密码输入Plink。
请注意,登录后,您还需要考虑其他一些问题。由于您有一个隐藏的窗口,因此您必须计划编写整个Telnet会话的脚本。为了编写Telnet脚本,您可能需要在主机程序需要时将输入发送到telnet。如果您立即发送所有输入,主机程序/操作系统可能无法正确处理它。这意味着您可能需要在Tcl Expect
的行中执行某些操作,您可以在其中编写要查找的输出的脚本,然后在出现预期输出时发送什么输入。我在Powershell中至少看到过类似的实现。
顺便说一句,如果您可以使用SSH而不是Telnet,则可以避免使用密码管道。管道密码,如一般的Telnet协议,是不安全的。