PowerShell和批量修改ADUser属性与扩展架构

时间:2016-07-13 08:19:19

标签: xml powershell filtering

我正在尝试创建一个powershell脚本,如果需要,将检查并更改嵌入到所有AD用户的属性中的URL的情况。域控制器已应用扩展架构以允许Mac用户群的mcx设置,URL是应用于每个mac用户的主文件夹路径。

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

将显示此属性的完整信息,包括此URL路径,作为xml数据。此输出以通常的<?xml version="1.0" encoding="UTF-8"?>等开头,但我无法在此输出中进行更深层次的过滤,以查找名为_CFURLString的键下的字符串URL。

在大多数情况下,路径是小写的,但是volume-path中的每个单词都需要以大写字母开头,但我很难找到过滤属性结果的方法,以显示特定键的字符串值。 Select-String -pattern不起作用。如果您尝试将其传递给数组,则数组的第一个元素包含整个xml字符串,因此我正在寻找一种方法来筛选所有这些xml信息以检查和修改字符串值。

1 个答案:

答案 0 :(得分: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