【发布时间】:2015-07-25 06:32:54
【问题描述】:
我在 power-shell 中有一个脚本,它可以从多个服务器上注销断开的会话,并且每当它从各个服务器上注销断开的用户时,它都会向我发送一封电子邮件。截至目前,当脚本从多个服务器注销用户时,我收到了多封电子邮件。我正在尝试添加功能,其中列出了从脚本中注销的用户,并且只向我发送一封包含用户列表的电子邮件。脚本如下:-
$servers = get-content “C:\Users\Desktop\server.txt”
foreach($Server in $Servers) {
try {
$disconnectedusers = @()
query user /server:$Server 2>&1 | select -skip 1 | ? {($_ -split "\s+")[-5] -eq 'Disc'} | % {logoff ($_ -split "\s+")[-6] /server:$Server /V ; $disconnectedusers += ($_ -split "\s+")[1]}
If($disconnectedusers -ge 1)
{
Send-MailMessage -to xx@xx.com -from sc@sc.com -Subject "List of Disconnected Users Logged Off" -Body "Disconnected User session for user:-$disconnectedusers on server $Server has been Logged off." -SmtpServer smtp.gmail.com
}
}
catch {}
}
非常感谢任何帮助。
【问题讨论】:
-
澄清一下.. 您正在寻找一封电子邮件,其中列出了每个用户已注销的所有服务器?如果是这样,我鼓励您考虑使用哈希表而不是数组。例如,您可以执行 $hashTable["user1"] += $server 。然后在构建电子邮件正文时枚举它们。
-
没错,我正在寻找由用户组成的单个电子邮件
标签: powershell