复杂Powershell案例-获取批量建立账户的状态-PS代码的编写!

时间:2022-04-26 00:35:24

严格来说我们需要利用PS编写工具来编写整个脚本,我们没有安装其他的程序进行编写,我们就直接写PowerISE 来实现。

复杂Powershell案例-获取批量建立账户的状态-PS代码的编写!

我们点开Powershell ISE,界面也是标准的编辑的界面:

复杂Powershell案例-获取批量建立账户的状态-PS代码的编写!

我们直接在这个界面进行编辑,我们先弄清楚一下逻辑:

1. 将我们需要建立账户做成一个文件,并导入

2. 将新建用户变成一个过程,在这个过程中将数据做一个收集

3. 将最终的结果变成一个HTML邮件,然后嵌入邮件当中发出去。

接下去就进行编码的步骤:

$userlist=import-csv d:\just.csv;
#将用户从CSV文件中倒入我们的用户
$body="<html><head><title>这是一封用户倒入邮件</title><body><table><tr><td>用户名</td><td>创建时间</td> <td>创建状态</td></tr>";
#将我们的HTML的邮件的前面部分
foreach($user in $userlist)
#轮询用户的list
{
$status="";
#先将用户状态重置为空;
try
{
new-aduser  -Name $user.name  -UserPrincipalName $user.upn -SamAccountName $user.name -DisplayName $user.displayname  -AccountPassword (ConvertTo-SecureString Admin123456 -AsPlainText -Force)  -ErrorAction SilentlyContinue -enabled:$true;
#新建用户,且将我们的用户属性与我们的值对应上,同时设置错误后的处理,并且默认继续
$status="创建成功";
#将用户状态设置创建成功
}
catch
{
$status="创建失败失败原因是:"+$_;
#记录我们创建失败的原因
}
$userstatus="<tr><td>"+$user.name+"</td><td>"+(get-date -format "mm:ss")+"</td> <td><font color=red>"+$status+ "</font></td> </tr>";
#HTML 设置用户的状态
$body=$body+$userstatus;
#将每一行的用户状态组成一个大的用户状态
}
$body=$body+"</table></body></html>"
#组成整个html页面
Send-MailMessage -SmtpServer 127.0.0.1 -From zhangsan@adn.com -To xupeng@edensoft.cn -Subject:"User create report" -Body $body -BodyAsHtml
#给用户发送邮件,创建邮件HTML格式



我们建立如下的csv文件:

复杂Powershell案例-获取批量建立账户的状态-PS代码的编写!

然后我们执行下命令,看下邮件,发现邮件乱码:

复杂Powershell案例-获取批量建立账户的状态-PS代码的编写!


接下来我们需要给我们的Powershelll 进行添加相应的编码规则,这里是我们的Unicode:

复杂Powershell案例-获取批量建立账户的状态-PS代码的编写!

修改为Unicode 之后,我们邮件收到就正常了:

复杂Powershell案例-获取批量建立账户的状态-PS代码的编写!

奇怪,没有边框,我们需要为所有的新消息添加边框,就是添加一下这个参数:

复杂Powershell案例-获取批量建立账户的状态-PS代码的编写!


我们再执行下,结果就正常了。

我们删除下建立的对象,然后再重新执行下脚本,发现所有账户建立成功,用户创建状态叶可以收到邮件了。

复杂Powershell案例-获取批量建立账户的状态-PS代码的编写!



我们再看看邮件:

复杂Powershell案例-获取批量建立账户的状态-PS代码的编写!

到此全部执行完毕,这个课程会录制为视频分享给大家,希望大家能够有所收获,谢谢大家。