我是 powershell 和 windows 的新手,我想知道一种简单而优雅的方法将小尺寸纯文本发送到另一台计算机。我知道您可以在 Linux/OSX shell 中非常轻松地使用以下命令执行此操作:
ls | mail <my@email>
无论是 powershell 等效方法还是其他方法都值得赞赏!
答案1
这不是 PowerShell 独有的功能。早在 PowerShell 出现之前,它就已经可以做到了。几十年来,您一直可以通过内置的 Windows 可执行文件在 Windows 中做到这一点。
Syntax
MSG username [options] [message]
MSG sessionname [options] [message]
MSG sessionid [options] [message]
MSG @filename [options] [message]
MSG * [options] [message]
Options
username The user to send to, * will send to all sessions on the machine.
/SERVER:servername The server to contact (default is current).
/TIME:seconds Time delay to wait for receiver to acknowledge msg.
/V Verbose, display extra information.
/W Wait for response from user, useful with /V.
message The message text to send, some special characters may
have to be escaped.
# Examples
msg User1 "Let's meet at 1PM today"
# Example - additional data to see what the user did with the message
msg $env:USERNAME /w /v "Let's meet at 1PM today"
# Results of the user reposne
<#
Sending message to session Console, display time 60
Message to session Console responded to by user
#>
https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/msg
执行相同操作的完整 PowerShell 方法只是调用相同的可执行文件。
Invoke-WmiMethod -Path Win32_Process -Name Create -ArgumentList "msg * 'help me'" -ComputerName $env:COMPUTERNAME
然而,有时,老派才是最好的。
只需知道,当您转到 Powershell v7 时,WMI cmdlet 等就不在其中。具体来说,因为 PSv7 是跨平台的,并且它们上没有 WMI 堆栈。
注意事项:
Msg.exe 并不存在于所有 Windows 操作系统版本中,例如 Windows 家庭版。
用户必须在您的网络上!
如果不是,那么您会遇到一个完全不同的问题,这将需要其他配置和/或工具/方法。