Powershell如何制定屬性並輸出


這個標題看着有些雲里霧里....

前一陣,群里有個朋友問博主“我想把所有用戶的SMTP地址全部輸出到CSV文件中進行統計,但是SMTP地址似乎輸出的是錯誤的,可在shell里看輸出的內容是正確的阿”

CSV中會顯示 Microsoft.ActiveDirectory.Management.ADPropertyValueCollection

 

一聽他說輸出錯誤,博主立刻明白了問題所在,告訴他,你在shell里再次輸出name,proxyaddress這兩個屬性對應的內容,看看輸出的內容有什么不一樣

很明顯這就不是一個正常的字符串,看上去像一個屬性集合,說到這我們是不是就要聯想到哈希表呢?

 

那這個需求到底要如何寫才可以實現呢?我們需要自定義一個屬性,然后通過腳本塊給這個屬性取值,方法如下:

@{N="proxyaddresses";E={$_.proxyaddresses -join ";"}}

如果有多個proxyaddresses地址,我們只想取第一個的話

@{N="proxyaddresses";E={$_.proxyaddresses[0]}} 

[]就相當於鍵,想取哪個值,填寫與其對應的鍵就可以了

 

有了核心命令,接下來完整命令就十分方便編寫了,如下請參考:

import-csv d:\temp\mp\321.csv | foreach { Get-ADuser $_.username -Properties * | Select-Object samaccountname,@{N="proxyaddresses";E={$_.proxyaddresses -join ";"}}} | export-csv d:\temp\test.csv -No -NoTypeInformation -Encoding
 
csv文件需要指定header=username 即可,然后把每一個username交給pipline后的循環執行並輸出


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM