.single.post-author,作者:Konstantinos Tsoukalas,最後更新:2025 年 11 月 26 日
您希望在管理員每次登錄 Windows Server 或 Windows 10/11 PRO 時自動接收電子郵件警報嗎?如果是這樣,請繼續閱讀下文,了解如何執行此操作。
當管理員帳戶登錄 Windows 時發送自動電子郵件通知可以通過提醒管理員潛在的未經授權的訪問來增強安全性。監控管理員登錄可以幫助您實時檢測未經授權的訪問嘗試,在本文中,我們將向您展示強制 Windows 計算機在管理員帳戶登錄時自動發送電子郵件警報。
* 注意:
1.這些說明甚至可以應用在標準 Windows 服務器或域控制器上。
2.這些說明也適用於 Windows 11/10 專業版或企業版。
當任何管理員帳戶被禁用時,如何強制 Windows Server 2016/2019 或 Windows 10/11 PRO 發送電子郵件通知已登錄。
要求:用於發送電子郵件的 SMTP 服務器。
步驟 1. 創建一個 PowerShell 腳本,以便在管理員登錄時發送電子郵件通知。
完成此任務的第一步是創建一個 PowerShell 腳本,該腳本將在管理員帳戶登錄服務器時自動發送電子郵件。 *
* 注意:如果您希望在任何用戶登錄計算機時收到電子郵件通知,請使用本文末尾提供的腳本,該腳本也適用於遠程桌面 (RDP) 用戶。
1. 在 C:\ 驅動器或您想要存儲將發送電子郵件的 PowerShell 腳本的任何其他文件夾中創建一個名為“Scripts“的文件夾。 *
* 注意:在本指南中,我們在“C:\Windows\System32\Scripts”中創建了腳本文件夾。
2. 現在打開記事本並複製–粘貼以下文本來創建腳本:
# 信息:當管理員帳戶登錄計算機時,此腳本會發送一封電子郵件。
# SMTP 服務器的電子郵件憑據
$Username=”[email protected]” # 發件人電子郵件地址
$PlainPassword=”senderpassword” # 發件人電子郵件密碼
$SecurePassword=ConvertTo-SecureString $PlainPassword-AsPlainText-Force
$Cred=New-Object System.Management.Automation.PSCredential ($Username, $SecurePassword)# 獲取登錄用戶和計算機信息
$LoggedInUser=$env:USERNAME
$Computer=$env:COMPUTERNAME
$LocalTime=Get-Date-Format”yyyy-MM-dd HH:mm:ss”# 獲取當前 Windows 身份
$windowsIdentity=[System.Security.Principal.WindowsIdentity]::GetCurrent()
$principal=New-Object System.Security.Principal.WindowsPrincipal($windowsIdentity)# 本地管理員組的 SID (S-1-5-32-544)
$adminSid=New-Object System.Security.Principal.SecurityIdentifier(“S-1-5-32-544”)# 檢查用戶是否是管理員組的成員
$isAdmin=$principal.IsInRole($adminSid)if ($isAdmin) {
# 電子郵件內容
$To=”[email protected]” # 收件人電子郵件地址
$Subject=”SERVERNAME 登錄警報:$LoggedInUser”
$Body=@”
用戶 $LoggedInUser 已在 $LocalTime 登錄 $Computer。
“@# 發送電子郵件
Send-MailMessage-From $Username-To $To-Subject $Subject-Body $Body `
-SmtpServer”mail.domain.com”-Port 587-UseSsl-Credential $Cred# 可選:本地日誌文件
Add-Content-Path”C:\Windows\System32\Scripts\UserLoginLog.txt”-Value”$LocalTime – $LoggedInUser 在 $Computer 上登錄”
}
3. 然後按如下方式修改腳本文本:
替換“[email protected]” 替換為您的發件人電子郵件地址。將“senderpassword”替換為發件人的電子郵件地址密碼。將“[email protected]”替換為收件人的電子郵件地址。將“SERVERNAME”替換為您的 Windows 服務器的名稱。 將“mail.domain.com”替換為您的 SMTP 服務器的名稱。如果需要,將“587″替換為 SMTPS 服務器的端口。 將“C:\Windows\System32\Scripts”替換為“Scripts”文件夾的完整路徑(如果您在其他位置創建它)。
4a。 完成後,從文件菜單中選擇另存為。
4b。 現在在“另存為”對話框中執行以下操作:
選擇將文件保存到您之前創建的“Scripts“文件夾中。在保存類型:中選擇 所有文件 在編碼:Unicode中選擇 鍵入文件名:“EmailAleltForAdminLogins.ps1″ 單擊保存,然後關閉記事本。
步驟 2. 測試您創建的 PowerShell 腳本。
創建腳本後,請在繼續操作之前檢查其是否有效。為此:
1.右鍵單擊“EmailAleltForAdminLogins.ps1“,然後選擇使用 PowerShell 運行。
2. 如果腳本有效,則您在腳本中輸入的收件人地址應該會收到一封電子郵件,通知您在運行腳本時“管理員”帳戶已登錄到服務器。如果是這樣,請繼續執行下一步。
步驟 3. 強制 Windows 在登錄時通過組策略運行腳本。
現在繼續並配置 Windows 以通過本地運行您在“登錄”階段創建的腳本組策略。
+ R 鍵打開“運行”命令框。
2。在“運行”命令框中,鍵入gpedit.msc並按Enter(確定)打開本地組策略編輯器。
3. 在本地組策略編輯器中導航到以下位置:
用戶配置 > Windows 設置 > 腳本(登錄/註銷)> 登錄
4a。 在“登錄屬性”窗口中,選擇 PowerShell 腳本 選項卡,然後單擊添加。
4b. 在“添加腳本”窗口中單擊瀏覽
4c. 導航到保存創建的腳本文件的文件夾(例如本例中的“C:\Windows\System32\Scripts\”文件夾),選擇 “EmailAleltForAdminLogins.ps1“腳本文件,然後單擊打開。
4d。 然後,複製粘貼以下內容在腳本參數字段中輸入文本,然後單擊確定:
-WindowStyle Hidden-ExecutionPolicy Bypass
4e。 最後單擊應用 > 確定並關閉本地組策略編輯器。
5。 現在重新啟動服務器以應用策略或在命令提示符中運行“gpupdate/force“,然後從 Windows 中註銷。
6. 重新登錄服務器,幾秒鐘後,您將收到有關此登錄事件的電子郵件通知。登錄事件還將記錄在“Scripts”文件夾內的“UserLoginLog.txt“文件中(例如本例中的“C:\Windows\System32\Scripts\UserLoginLog.txt”)。 *
* 注意:
1. 由於上述腳本僅在“登錄”時運行(例如,當您重新啟動服務器或管理員帳戶註銷並重新登錄到服務器時),並且不在服務器解鎖時運行,請繼續並強制 Windows 即使在解鎖服務器時也發送電子郵件警報。為此,請閱讀本教程步驟 2 中的說明:如何在 Windows Server 或 Windows 10/11 服務器解鎖時接收電子郵件通知。
2. 僅當登錄用戶屬於管理員組時,您在步驟 1 中創建的 PowerShell 腳本才會發送電子郵件通知。如果您希望收到任何用戶連接到計算機的通知,即使是通過遠程桌面連接的用戶(RDP 連接的用戶),請使用以下腳本:
# 信息:當任何用戶帳戶登錄到計算機時,此腳本會發送電子郵件。
# SMTP 服務器的電子郵件憑據
$Username=”[email protected]” # 發件人電子郵件地址
$PlainPassword=”senderpassword” # 發件人電子郵件密碼
$SecurePassword=ConvertTo-SecureString $PlainPassword-AsPlainText-Force
$Cred=New-Object System.Management.Automation.PSCredential ($Username, $SecurePassword)# 電子郵件內容
$LoggedInUser=$env:USERNAME
$Computer=$env:COMPUTERNAME
$LocalTime=Get-Date-Format”yyyy-MM-dd HH:mm:ss”
$To=”[email protected]” # 收件人電子郵件地址
$Subject=”ServerName Login Alert: $LoggedInUser”
$Body=@”
用戶 $LoggedInUser 已登錄到 $Computer $LocalTime.
“@# 發送電子郵件
Send-MailMessage-From $Username-To $To-Subject $Subject-Body $Body `
-SmtpServer”mail.domain.com”-Port 587-UseSsl-Credential $Cred# 可選:本地日誌文件
Add-Content-Path”C:\Windows\System32\Scripts\UserLoginLog.txt”-Value”$LocalTime – $LoggedInUser 在 $Computer 上登錄”
就是這樣!請留下您對您的經歷的評論,讓我知道本指南是否對您有幫助。請喜歡並分享本指南以幫助其他人。
如果本文對您有用,請考慮通過捐贈來支持我們。即使 1 美元也可以為我們帶來巨大的幫助,讓我們繼續幫助他人,同時保持網站免費:
Konstantinos 是 Wintips.org 的創始人和管理員。自 1995 年以來,他作為計算機和網絡專家為個人和大公司提供 IT 支持。他專門解決與 Windows 或其他 Microsoft 產品(Windows Server、Office、Microsoft 365 等)相關的問題。 Konstantinos Tsoukalas 的最新帖子(查看全部)