我试图在Powershell中创建一个脚本,将消息框发送到远程PC列表。但我在本地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
}
最佳答案
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
}
}
关于powershell - 将消息框发送到远程PC列表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29014944/