在Python的远程窗口机器中使用GUI添加输入



我想在远程windows机器上使用GUI输入变量。我尝试在winrm中使用run_ps运行Powershell输入框命令。

Add-Type -AssemblyName Microsoft.VisualBasic;
$value = [Microsoft.VisualBasic.Interaction]::InputBox('Enter group name', 'XA Group', '')

在远程机器上,当我尝试从本地机器运行时,它没有显示输入框。我是否可以在winrm中运行这个powershell输入框命令,或者在远程机器中使用GUI输入变量的任何其他方法?

不支持在PowerShell远程会话中使用GUI元素,因为服务于调用者请求的服务器组件运行在一个不可见的窗口站中,并且远程协议仅基于将PowerShell命令的输出(包括非交互式控制台程序的输出)传回调用者:

  • 在调用[Microsoft.VisualBasic.Interaction]::InputBox()方法的情况下,该方法本身检测到它正在不可见的窗口站中运行,并发出以下错误消息:

    • Showing a modal dialog box or form when the application is not running in UserInteractive mode is not a valid operation. Specify the ServiceNotification or DefaultDesktopOnly style to display a notification from a service application.[1]
  • 在其他情况下,例如尝试启动notepad.exe,失败可能是无声的(进程创建可能成功,但任何东西都不可见,进程可能在创建后不久自行关闭)。

您可以尝试以下方法之一:

  • 之前显示客户端端的GUI元素调用远程命令,并将结果作为参数传递给远程命令。

  • 使用基于控制台Read-Hostcmdlet相反。

    • 注意:提示用户输入的外部程序在远程会话中不支持,即使它们在控制台中提示;例如,cmd /c 'set /p foo="Enter something: "'立即返回,而不是提示。

[1]此错误消息建议的解决方案在远程会话中工作;如果它是有效的,对话框将无用地显示在服务器上;如果您使用这样的样式调用(直接通过[System.Windows.Forms.MesssageBox]::Show(),因为[Microsoft.VisualBasic.Interaction]::InputBox()不支持指定这些样式),实际发生的情况是不显示对话框,并且立即返回默认按钮响应。

最新更新