2016-07-13 33 views
0

我想創建一個PowerShell腳本,將檢查和更改,如果有必要,嵌入到所有AD用戶的屬性的URL的情況。域控制器已應用擴展架構以允許Mac用戶羣的mcx設置,並且該URL是應用於每個mac用戶的主文件夾路徑。powershell和批量修改ADUser屬性與擴展架構

Get-ADUser <username> -properties * | Select-Object -ExpandProperty apple-mcxsettings 

將顯示此屬性的完整信息,包括此URL路徑作爲xml數據。此輸出始於通常的<?xml version="1.0" encoding="UTF-8"?>等,但我無法在此輸出內進行更深入的篩選,以找到名爲_CFURLString的密鑰下的字符串的URL。

在大多數情況下,路徑是小寫,但卷路徑中的每個單詞都需要以大寫字母開頭,但我正在努力尋找過濾屬性結果的方式,以顯示特定鍵的字符串值。 Select-String -pattern不起作用。如果您嘗試將其傳遞到數組中,則數組的第一個元素包含整個xml字符串,因此我正在尋找一種方法來過濾所有這些xml信息以檢查和修改字符串值。

回答

1

如果屬性值就是一個XML文檔對待它,與[xml]類型加速器:

$settingsXml = [xml](Get-ADUser syone201 -properties apple-mcxsettings | Select-Object -ExpandProperty apple-mcxsettings) 

假設XML的結構爲an XML-formatted PropertyList,你必須先找到正確的鑰匙,然後在下一個兄弟節點中找到該值:

$CFURLStringKey = Select-Xml -Xml $settingsXml -XPath '//plist/dict/key[. = "_CFURLString"]' |Select-Object -ExpandProperty Node 
$CFURL = $CFURLStringKey.NextSibling.InnerText 
+0

嗨,感謝您的及時回覆。看來問題更深入。我嘗試了通過從「Get-ADUser syone201 -properties apple-mcxsettings | Select-Object -ExpandProperty apple-mcxsettings」的結果中創建一個變量,並且它說不能轉換值,然後輸出以篩選通常的內容style蘋果xml plist <?xml version =「1.0」encoding =「UTF-8」?> <!DOCTYPE plist PUBLIC「 - // Apple // DTD PLIST 1.0 // EN」「http://www.apple。 com/DTDs/PropertyList-1.0.dtd「> Syone201

+0

錯誤消息的最後部分是什麼意思?在xml內容 –

+0

及其所有參數後面,以「不支持給定路徑的格式」結束。如果我不能讀取我想改變的價值,如何在不破壞修正的情況下寫回修正案,這就增加了頭痛。是否可以進一步轉換? 「 – Syone201