我有ps1脚本从vmware集群环境中获取一些信息。
在ps1脚本的某个位置需要 ENTER 按钮按键。
那么,怎么做?
-Thanks
答案 0 :(得分:39)
如果我理解正确,您希望PowerShell将 ENTER 键击发送到某个交互式应用程序吗?
$wshell = New-Object -ComObject wscript.shell;
$wshell.AppActivate('title of the application window')
Sleep 1
$wshell.SendKeys('~')
如果该交互式应用程序是PowerShell脚本,只需使用PowerShell窗口标题栏中的任何内容作为 AppActivate 的参数(默认情况下为powershell.exe的路径)。为避免歧义,您可以使用title 'new window title'
命令让脚本重新命名自己的窗口。
一些注意事项:
{ENTER}
,虽然它们不相同 - 这是键盘的 ENTER 键。完整列表可在此处获取:http://msdn.microsoft.com/en-us/library/office/aa202943%28v=office.10%29.aspx。Sleep 1
语句的原因是等待1秒,因为窗口激活需要一些时间,如果您立即调用 SendKeys ,它会将密钥发送到PowerShell窗口,或无处可见。有时 wscript.shell 的 SendKeys 方法可能有点古怪,所以如果遇到问题,请将上面的第四行替换为:
Add-Type -AssemblyName System.Windows.Forms
[System.Windows.Forms.SendKeys]::SendWait('~');
答案 1 :(得分:1)
for possible_key in range(3, 8):
print(dictionary.get(possible_key, 'missing value'))
答案 2 :(得分:0)
此外,$wshell = New-Object -ComObject wscript.shell;
帮助了一个在后台运行的脚本,只需添加$wshell
即可正常工作。修复了它无法作为背景运行的问题! [Microsoft.VisualBasic.Interaction]::AppActivate("App Name")