function Get-MyLoggedOnUsers
{
param([string]$Computer)
Get-WmiObject Win32_LoggedOnUser -ComputerName $Computer | Select Antecedent -Unique | %{“{0}{1}” -f $_.Antecedent.ToString().Split(‘”‘)[1], $_.Antecedent.ToString().Split(‘”‘)[3]}
}
有没有办法为此收到电子邮件提醒,并添加更多查询,如客户端名称客户端IP,日期和时间等。
答案 0 :(得分:1)
您的函数需要编译到内存中,因此当您将其作为脚本运行时,您需要具有函数声明(整个Function Get-My {
,然后一直到最终}
)在顶部,然后在您的代码中,您可以运行Get-MyLoggedOnUsers
并查看此类列表中的唯一用户。
Antecedent
----------
\\.\root\cimv2:Win32_Account.Domain="BEHEMOTH",Name="FoxDeploy"
使用PowerShell,我们可以将任何内容的输出存储在变量中,然后使用它。因此,在我的代码中,我运行您的函数,在变量中捕获它,然后将其用作电子邮件的正文。我希望增加的细节有所帮助。
PowerShell有一个内置的cmdlet Send-MailMessage
,如果你的环境中有一个开放的SMTP转发器/电子邮件服务器,如Exchange或其他东西,你可以使用它。您也可以使用它发送GMail消息。
人们已经为几乎所有电子邮件提供商构建了PowerShell模块,因此您可以使用PSGmail模块来管理您的cmdlet。如果要使用Send-MailMessage的内置cmdlet,请运行以下命令。
$MailMessage= Get-MyLoggedOnUsers
Send-MailMessage -body $MailMessage -Port 465 -SmtpServer smtp.gmail.com `
-Credential (get-credential) -to Whoever@gmail.com -From Yourname@gmail.com
这会提示您输入Gmail凭据,并应将消息发送出去。确保为-To和-From参数键入正确的电子邮件地址。
作为使用内置工具的示例。