我在寫一個PS腳本,它將搜索終端服務器的文本文件,查找斷開的會話並返回用戶名和服務器名稱。使用Get-TSSession返回用戶名和ServerName
其目的是定期向斷開連接的會話的用戶發送電子郵件,以嘗試讓他們正常註銷。當他們不註銷時,他們傾向於保持我們的遺留數據輸入系統打開,這增加了索引/表損壞的發生率。
我到目前爲止的代碼是這樣的:
$tsservers = Get-Content .\powershell\terminalservers.txt
foreach ($i in $tsservers){
#write-output $i
$Sessions = Get-TSSession -ComputerName $i | where {(($_.state -eq "Disconnected"))} | Select -ExpandProperty UserName
foreach ($session in $Sessions) {
$query = "SELECT * from ds_user where ds_sAMAccountName='$session'"
$user = Get-WmiObject -Query $query -Namespace "root\Directory\LDAP"
$user.DS_mail
}
}
使用這個我可以取回他們的用戶名和查詢AD生產他們的電子郵件。我已經嘗試了許多次將服務器屬性應用到代碼中,但無濟於事。
編輯1:理想情況下,我想通過多個屬性(例如:斷開連接時間等)。
對不起,但對我而言,你的問題並不清楚。這個腳本是否工作?如果沒有,那麼錯誤是什麼,如果是的話是什麼問題? – JPBlanc
以防萬一你還沒有考慮過自動註銷[角度](http://serverfault.com/questions/369858/automatically-log-off-idle-terminal-services-users-without-using-idle-會議李)... – noam
感謝您的建議,諾姆。我確實考慮過這一點。但是,自動註銷將潛在地強制關閉數據錄入應用程序,並增加數據/索引損壞的發生率。我希望情況並非如此,因爲這將是最快最簡單的解決方案。儘管如此,感謝您的建議。 – JohnyD