Заранее спасибо.
Для запуска команды на удаленном хосте я использую сценарий telnet.vbs
, но я не удовлетворен, так как мне нужно подключиться к более чем 100 хостам, и этот сценарий выполняется в режиме взаимодействия. Я пытался также использовать ts10.exe, plink.exe, но ts10.exe также работает с intercative. Я хотел бы использовать Get-Telnet
созданный Martin9700 , но не вижу эффектов. Работает без ошибок, но ничего не делает.
`Function Get-Telnet
{ Param (
[Parameter(ValueFromPipeline=$true)]
[String[]]$Commands = @("fusion","tnniw","ewfmgr d: -commit"),
[string]$RemoteHost = "192.168.1.1",
[string]$Port = "23",
[int]$WaitTime = 1000,
[string]$OutputPath = ".\telnet.txt"
)
#Attach to the remote device, setup streaming requirements
$Socket = New-Object System.Net.Sockets.TcpClient($RemoteHost, $Port)
If ($Socket)
{ $Stream = $Socket.GetStream()
$Writer = New-Object System.IO.StreamWriter($Stream)
$Buffer = New-Object System.Byte[] 1024
$Encoding = New-Object System.Text.AsciiEncoding
#Now start issuing the commands
ForEach ($Command in $Commands)
{ $Writer.WriteLine($Command)
$Writer.Flush()
Start-Sleep -Milliseconds $WaitTime
}
#All commands issued, but since the last command is usually going to be
#the longest let's wait a little longer for it to finish
Start-Sleep -Milliseconds ($WaitTime * 4)
$Result = ""
#Save all the results
While($Stream.DataAvailable)
{ $Read = $Stream.Read($Buffer, 0, 1024)
$Result += ($Encoding.GetString($Buffer, 0, $Read))
}
}
Else
{ $Result = "Unable to connect to host: $($RemoteHost):$Port"
}
#Done, now save the results to a file
$Result | Out-File $OutputPath
}`
Get-Telnet -RemoteHost "$RemoteHost" -Commands "$Commands" -OutputPath "$OutputPath" -WaitTime 1500