Я использую функцию Get-LoggedOnUser из Technet Script Center Microsoft Repository: Get-LoggedOnUserОтправить выскочит сообщение для определенных пользователей RDP, которые не авторизованы от
Я имею ссылающегося на "сообщение" Command (Net Send) на моем RDP-сервере, чтобы отправить всплывающее сообщение любому пользователю, который не вышел из системы за одну ночь.
Я не хочу передавать сообщение всем пользователям на сервере; просто отправьте уведомление всем пользователям, которые вошли в систему с до полуночи накануне вечером.
Я хочу, чтобы сообщение отображало свое имя пользователя и время входа в систему и напоминало им выйти из системы.
$yesterday = [DateTime]::Today.ToString('M/d/yyyy HH:mm ')
$NotLoggedOut = Get-LoggedOnUser -ComputerName COMPUTERNAME | Where-Object {$_.LogonTime -lt $yesterday}
$Script={param($Command, $Users, $ComputerName, $LogonTime); Write-Host $Command; &cmd /c "$Command"}
$Command = Foreach($User in $NotLoggedOut){write-host "Dear " $User.username "the system shows that you have been logged on since " $User.LogonTime "REMINDER: You MUST Log off at the end of everyday"}
Invoke-Command -ComputerName COMPUTERNAME -ScriptBlock $Script -ArgumentList $Command
$ NotLoggedOut показывает три пользователей, которые получат Сообщи
UserName ComputerName SessionName Id State IdleTime LogonTime Error
-------- ------------ ------------ -- ----- -------- ------------ -----
User01 COMPUTERNAME rdp-tcp#0 1 Active 5 7/30/2015 9:39 AM
User02 COMPUTERNAME rdp-tcp#9 2 Active 10 7/30/2015 8:46 AM
User03 COMPUTERNAME rdp-tcp#2 2 Active 7/30/2015 8:46 AM
User01 получает сообщение.
Но я не могу заставить его отправить сообщение каждому пользователю в цикле foreach. Только User01.