最近,我创建了一个使用诸如Out-GridView和Winforms等GUI的脚本,并将该模块放在远程Windows 2012服务器上。这是为了允许用户从集中位置建立远程PSSession并执行脚本。
例如:
1。尝试调用winform时出现以下错误:
Exception calling "ShowDialog" with "0" argument(s): "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."
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : InvalidOperationException
+ PSComputerName : servera
2 尝试将结果放入Out-GridView时,我收到以下错误:
Out-GridView does not work in a remote session.
+ CategoryInfo : InvalidOperation: (Microsoft.Power...GridViewCommand:OutGridViewCommand) [Out-GridView], NotSupportedException
+ FullyQualifiedErrorId : RemotingNotSupported,Microsoft.PowerShell.Commands.OutGridViewCommand
+ PSComputerName : servera
问题:
是否有任何变通办法可以让我使用OGV和Winforms?
旁注: 我愿意允许用户将模块导出到他们的物理工作站,以便他们在需要时使用这些选项--OGV和Winforms - 只有在有效/安全的情况下才能这样做。另一方面,我是开放的不同的建议。
答案 0 :(得分:2)
您需要使用本地计算机上的UI,而不是远程计算机上的UI。远程检索数据,在本地显示。
例如:
Invoke-Command -ComputerName RemoteServer -Scriptblock { Get-Process } | Out-Gridview
使用scriptblock中的gridview将尝试在RemoteServer上启动UI并向您提供您提到的错误。
答案 1 :(得分:0)
Invoke-Command
我认为这会更好,因为您告诉远程计算机该做什么而不是要求使用Enter-PSSession
或New-PSSession
直接与远程计算机进行交互。