powershell - 不依赖 WinRM 服务将消息发送到远程电脑

标签 powershell winrm

我想知道是否可以在不依赖 WinRM 服务的情况下向远程电脑发送系统托盘消息或弹出消息框。每次我尝试时都会收到错误,因为该服务在我测试的地方未激活,并且无法通过正常用户级别访问激活。

对于系统托盘消息,我使用此代码(适用于我所在的本地电脑)

[void]   
[System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")
$objNotifyIcon = New-Object System.Windows.Forms.NotifyIcon 
$objNotifyIcon.Icon = "c:\temp\shake.ico"
$objNotifyIcon.BalloonTipText = "Message Text" 
$objNotifyIcon.BalloonTipTitle = "Do you agree?"
$objNotifyIcon.Visible = $True 
$objNotifyIcon.ShowBalloonTip(10000)

对于弹出消息,我使用此代码

[void
System.Reflection.Assembly]::LoadWithPartialName(‘Microsoft.VisualBasic’)
$result = [Microsoft.VisualBasic.Interaction]::MsgBox(“Do you agree?”,     
‘YesNoCancel,Question’, “Respond please”)
switch ($result) 
{ ‘Yes’ { “Ah good” } ‘No’ { “Sorry to hear that” } ‘Cancel’ { “Bye…” } }

请注意,这些是从各个 powershell 脚本站点获取的示例代码,而不是我自己的(以防有人识别该代码)。

最佳答案

您需要 WinRM 才能使用 PowerShell 远程处理。

如果您具有文件访问权限和 WMI 访问权限,则可以将文件复制到远程计算机,并直接使用 psexec 或 WMI 调用 powershell -File c:\temp\myscript.ps1 作为远程计算机上当前用户的交互进程。

另一方面:如果您无权配置 WinRM 服务,那么您可能也不允许向远程计算机发送消息,因为这是管理员的工作(在这种情况下,您将拥有权限配置 WinRM)。

关于powershell - 不依赖 WinRM 服务将消息发送到远程电脑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30411507/

相关文章:

json - 在 PowerShell 中使用另一个扩展 JSON

Powershell 比较两个目录文件(名称和哈希)。报告该名称是否仅在一个目录中,但在哈希检查时忽略它

sql-server-2012 - 由 chef-client 运行时,DISM/SQL2012 无法访问 Windows 更新

Powershell Invoke-Command 远程手动工作,但不是来自 Jenkins

asp.net - TFS 2017 版本定义。 WinRM - IIS Web 应用程序管理任务。在 "Default web site"下创建应用

ansible - ssl : auth method ssl requires a password

powershell - PowerShell-参数[Int32] $ Month当其应具有前导0时显示为单个整数

c# - 为什么我要使用 Powershell 而不是 C#?

linux - 是否有适用于 Windows 和 Linux 的 vscode 片段路径变量?

powershell - New-PSSession 在本地不起作用