您的位置:首页 > 运维架构 > Shell

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

2017-01-11 19:15 411 查看
严格来说我们需要利用PS编写工具来编写整个脚本,我们没有安装其他的程序进行编写,我们就直接写PowerISE 来实现。



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



我们直接在这个界面进行编辑,我们先弄清楚一下逻辑:
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文件:



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



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



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



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



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



我们再看看邮件:



到此全部执行完毕,这个课程会录制为视频分享给大家,希望大家能够有所收获,谢谢大家。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: