powershell - 远程安装完成后无法使用 PowerShell 向正确的用户发送电子邮件
问题描述
我编写了一个脚本,该脚本利用 try catch 使用 PowerShell 在远程计算机上安装软件。
该脚本尝试安装软件,如果成功,则应该向用户发送一封电子邮件,告知完成。除了发送电子邮件部分外,所有工作都按我的预期工作。
我正在使用以下简单的代码片段来发送电子邮件:
$username = "someone@example.com"
$password = "*****"
$sstr = ConvertTo-SecureString -string $password -AsPlainText -Force
$cred = New-Object System.Management.Automation.PSCredential -argumentlist $username, $sstr
$body = "Update installed successfully"
$searcher = [adsisearcher]"(samaccountname=$env:USERNAME)"
$name = $searcher.FindOne().Properties.mail
Send-MailMessage -To $name, "someone@example.com" -From "someone@example.com" -Subject 'Test message' -Body $body -BodyAsHtml -smtpserver smtp.office365.com -usessl -Credential $cred -Port 587
但是,由于我在远程计算机上以我自己的身份(对于提升的权限)运行脚本,因此脚本的以下部分将返回我的电子邮件地址而不是最终用户,因此将电子邮件发送给我自己而不是最终用户:
$searcher = [adsisearcher]"(samaccountname=$env:USERNAME)"
$name = $searcher.FindOne().Properties.mail
例子
echo $name
myemail@example.com
关于如何返回我正在安装软件的用户名而不是我自己的用户名有什么建议吗?
提前致谢。
解决方案
推荐阅读
- python - 绘制 MACD 线和直方图 python
- r - 在 R 中定义一种新的 for 循环?
- c - 函数参数和函数名在不同的行中有什么好处,如高级 C 书中的?
- gcc - What is the correct way to static link libc?
- python - 在学校管理系统中添加登录/注销功能
- html - 如何在一行中有多个对齐?
- node.js - Sequelize.Model 不存在
- android - 未收到来自 Firebase Phone Auth(印度)的 OTP
- c# - 页面刷新后 Selenium C# Stale Element 错误
- c++ - 收到此警告,“NSWindow 在 Xcode C++ 中检测到过多的实时窗口计数为 101”