我有 ps1 脚本可以从 vmware 集群环境中获取一些信息。
在 ps1 脚本的某些地方需要ENTER按钮击键。
那么,该怎么做呢?
-谢谢
我有 ps1 脚本可以从 vmware 集群环境中获取一些信息。
在 ps1 脚本的某些地方需要ENTER按钮击键。
那么,该怎么做呢?
-谢谢
如果我理解正确,您希望 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('~');
function Do-SendKeys {
param (
$SENDKEYS,
$WINDOWTITLE
)
$wshell = New-Object -ComObject wscript.shell;
IF ($WINDOWTITLE) {$wshell.AppActivate($WINDOWTITLE)}
Sleep 1
IF ($SENDKEYS) {$wshell.SendKeys($SENDKEYS)}
}
Do-SendKeys -WINDOWTITLE Print -SENDKEYS '{TAB}{TAB}'
Do-SendKeys -WINDOWTITLE Print
Do-SendKeys -SENDKEYS '%{f4}'
还$wshell = New-Object -ComObject wscript.shell;
帮助了一个在后台运行的脚本,它只需添加$wshell
. 修复它作为后台运行![Microsoft.VisualBasic.Interaction]::AppActivate("App Name")