複雜Powershell案例-獲取批量建立賬戶的狀態-PS代碼的編寫!

嚴格來說我們需要利用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 [email protected] -To [email protected] -Subject:"User create report" -Body $body -BodyAsHtml
#給用戶發送郵件,創建郵件HTML格式



我們建立如下的csv文件:

然後我們執行下命令,看下郵件,發現郵件亂碼:


接下來我們需要給我們的Powershelll 進行添加相應的編碼規則,這裏是我們的Unicode:

修改爲Unicode 之後,我們郵件收到就正常了:

奇怪,沒有邊框,我們需要爲所有的新消息添加邊框,就是添加一下這個參數:


我們再執行下,結果就正常了。

我們刪除下建立的對象,然後再重新執行下腳本,發現所有賬戶建立成功,用戶創建狀態葉可以收到郵件了。



我們再看看郵件:

到此全部執行完畢,這個課程會錄製爲視頻分享給大家,希望大家能夠有所收穫,謝謝大家。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章