如何编写Power Shell脚本来自动执行这组命令? Telnet到一台机器, 执行一些命令, 在telnet窗口的输出中分析, 根据该输出,发送更多命令 好吧,这不是最优雅的解决方案,它确实依赖于颤抖的
> Telnet到一台机器,
>执行一些命令,
>在telnet窗口的输出中分析,
>根据该输出,发送更多命令
创建一个VBScript以实际加快telnet会话,这是一个例子
set oShell = CreateObject("WScript.Shell") oShell.run("Telnet") WScript.Sleep 1000 oShell.SendKeys("Open 127.0.0.1 23") WScript.Sleep 1000 oShell.SendKeys("{Enter}") WScript.Sleep 1000 oShell.SendKeys("n") WScript.Sleep 1000 oShell.SendKeys("{Enter}") WScript.Sleep 1000 oShell.SendKeys"MyName" WScript.Sleep 1000 oShell.SendKeys("{Enter}") WScript.Sleep 1000 oShell.SendKeys("MyPassword") WScript.Sleep 1000 oShell.SendKeys("{Enter}") WScript.Sleep 1000 oShell.SendKeys("MyCommand") WScript.Sleep 1000 oShell.SendKeys("{Enter}") WScript.Sleep 1000
然后使用Powershell调用该脚本并将其传递给您想要执行的命令,在下面的示例中,这些命令存储在名为CommandList.txt的文件中
function Connect-MyTelnet{ Param( [string] $IPAddress, [string] $Port, [string] $UserName, [string] $Password, [string] $cmdlistPath ) ## - Setting default values: if($port -eq $null){ $Port = "23"; }; if($cmdlistPath -eq $null) { $CmdlistPath = 'c:\temp\cmdlist.txt'; }; ## create vbscript file: MyTelnetSession.vbs ## - For Microsoft Telnet: $MyVBScript = @" set oShell = CreateObject("WScript.Shell")`r`n oShell.run("Telnet")`r`n WScript.Sleep 1000`r`n oShell.SendKeys("Open $IPAddress $Port")`r`n WScript.Sleep 1000`r`n oShell.SendKeys("{Enter}")`r`n WScript.Sleep 1000`r`n oShell.SendKeys("n")`r`n WScript.Sleep 1000`r`n oShell.SendKeys("{Enter}")`r`n WScript.Sleep 1000`r`n oShell.SendKeys("$UserName")`r`n WScript.Sleep 1000`r`n oShell.SendKeys("{Enter}")`r`n WScript.Sleep 1000`r`n oShell.SendKeys("$Password")`r`n WScript.Sleep 1000`r`n oShell.SendKeys("{Enter}")`r`n WScript.Sleep 1000`r`n "@; ## - Get file with telnet commands: [array] $Cmdlist = Get-Content $cmdlistPath; ## loop through and build each telnet command line: foreach($cmd in $cmdlist) { ## - Build VBscript lines: $MyVBScript += 'oShell.SendKeys("'+$cmd+'")'+"`r`n"; $MyVBScript += "WScript.Sleep 1000`r`n"; $MyVBScript += 'oShell.SendKeys("{Enter}")'+"`r`n"; $MyVBScript += 'WScript.Sleep 1000'+"`r`n"; } ## - Close Telnet Session: $MyVBScript += 'oShell.SendKeys(" QUIT")'+"`r`n"; $MyVBScript += "WScript.Sleep 1000`r`n"; $MyVBScript += 'oShell.SendKeys("{Enter}")'+"`r`n"; $MyVBScript += 'WScript.Sleep 1000'+"`r`n"; ## - Save and execute generated VBscript: $MYVBScript | Out-File -FilePath c:\temp\MyTelnet.vbs -Encoding ASCII; & c:\temp\MyTelnet.vbs }; Set-Alias ct Connect-MyTelnet;
这应该做你要问的……
注意:不是我的解决方案,从this blog post发现,我已经使用了一两次.