将消息框发送到远程PC列表

Roo*_*oop 2 powershell

我试图在powershell中创建一个脚本,将消息框发送到远程PC列表.但是我在本地电脑上收到了所有消息.

谁能告诉我哪里出错了?

$PCLIST = Get-Content 'C:\TEST\PCLIST.TXT'

ForEach ($computer in $PCLIST) {

Enter-PSSession -ComputerName $computer

$GetUserName = [Environment]::UserName

#$CmdMessage has to be one line
$CmdMessage = {C:\windows\system32\msg.exe $GetUserName 'Hello' $GetUserName 'This is a test!'}

Invoke-Command -Scriptblock $CmdMessage
}
Run Code Online (Sandbox Code Playgroud)

A.D*_*A.D 5

mjolinor是对的.Invoke-Command对于你想要做的事情会更好.您可以使用现有的内容,只需为每个调用调用构建脚本块.(我使用'*'代替msg参数中的特定用户将其发送给所有用户.)编辑:我刚刚意识到当前的用户名变量可能会捕获用户调用此命令.将需要另一种获取当前用户的方法.也许通过AD或GWMI.

$PCLIST = Get-Content 'C:\TEST\PCLIST.TXT'

ForEach ($computer in $PCLIST) {

    Invoke-Command -ComputerName $computer -Scriptblock {
        $GetUserName = [Environment]::UserName
        $CmdMessage = {C:\windows\system32\msg.exe * 'Hello' $GetUserName 'This is a test!'}

        $CmdMessage | Invoke-Expression
    }

}
Run Code Online (Sandbox Code Playgroud)