簡體   English   中英

Powershell-隱藏的Windows中的鍵盤按鍵

[英]Powershell - Keyboard keystroke in a Hidden Windows

我正在實習,我必須編寫一個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窗口中

有人有解決辦法嗎?

問題是您使用的是SendKeys,它實際上只是模擬鍵盤上的按鍵。 如果沒有窗口,則沒有任何內容可以發送按鍵。

Start-Process $cmd -ArgumentList "/K telnet IP_ADDRESS" -Verb runAs -Windowstyle hidden

這只是告訴CMD在打開時運行指定的命令,應該做到這一點。

您可以將Putty用於telnet。 Plink是Putty的命令行版本,它在命令行上接受密碼。 不幸的是,telnet協議(與SSH不同)沒有用於發送密碼的標准化機制。 但是,您可以將輸入通過管道傳遞到Plink的stdin。 因此,您可以將密碼通過管道傳輸到Plink。

請注意,登錄后,還需要考慮一些其他問題。 由於您有一個隱藏的窗口,因此您必須計划編寫整個Telnet會話的腳本。 為了編寫Telnet腳本,您可能需要在主機程序需要時將輸入發送到telnet。 如果一次發送所有輸入,則主機程序/ OS可能無法正確處理。 這意味着您可能需要按照Tcl Expect方式做一些事情,在腳本中編寫要查找的輸出,然后在出現期望的輸出時發送什么輸入。 我已經在Powershell中看到了至少一種類似的實現。

順便說一句,如果您可以使用SSH而不是Telnet,則可以避免通過管道輸入密碼。像通常使用Telnet協議那樣,輸入密碼並不安全。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM