我正在尝试创建一个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信息以检查和修改字符串值。
答案 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