我试图在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)
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)
| 归档时间: |
|
| 查看次数: |
24731 次 |
| 最近记录: |