2016-07-13 5 views
0

Ich versuche ein Powershell-Skript zu erstellen, das den Fall einer URL überprüft und ändert, die in eine Eigenschaft aller AD-Benutzer eingebettet ist. Auf den Domänencontroller wurde das erweiterte Schema angewendet, um mcx-Einstellungen für die Mac-Benutzerbasis zuzulassen, und die URL ist ein für jeden Mac-Benutzer angewendeter Benutzerordnerpfad.Powershell und Bulk-Modify ADUser-Eigenschaften mit erweitertem Schema

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

werden die vollständigen Informationen dieser Eigenschaft einschließlich dieses URL-Pfads als XML-Daten angezeigt. Diese Ausgabe beginnt mit den üblichen <?xml version="1.0" encoding="UTF-8"?> etc, aber ich konnte nicht tiefer in dieser Ausgabe zu finden, um die URL zu finden, die eine Zeichenfolge unter einem Schlüssel namens _CFURLString ist. In den meisten Fällen ist der Pfad kleingeschrieben, aber jedes Wort im Volume-Pfad muss mit einem Großbuchstaben beginnen, aber ich habe Mühe, eine Methode zum Filtern des Eigenschaftsergebnisses zu finden, um den Zeichenfolgenwert eines bestimmten Schlüssels anzuzeigen . Select-String -pattern funktioniert nicht. Wenn Sie versuchen, es in ein Array zu übergeben, enthält das erste Element des Arrays die gesamte XML-Zeichenfolge. Daher suche ich nach einer Möglichkeit, alle diese XML-Informationen zu filtern, um die Zeichenfolgenwerte zu überprüfen und zu ändern.

Antwort

1

Wenn der Wert der Eigenschaft ist ein XML-Dokument behandelt sie dann als solche mit dem [xml] Beschleuniger:

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

Unter der Annahme, dass die XML als an XML-formatted PropertyList strukturiert ist, würden Sie zuerst die richtigen Schlüssel finden müssen, und dann wird der Wert im nächsten Geschwisterknoten gefunden:

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

Hallo danke für Ihre schnelle Antwort. Es scheint, dass das Problem tiefer geht. Ich habe versucht, was Sie vorgeschlagen, indem Sie eine Variable aus den Ergebnissen des "Get-ADUser syone201 -properties apple-mcxsettings | Select-Object -ExpandProperty apple-mcxsettings" und es sagt, kann nicht konvertieren Wert und dann Ausgaben, um den Inhalt der üblichen Bildschirm style apple xml plist Syone201

+0

Was sagt der letzte Teil der Fehlermeldung? Nach dem xml-Inhalt –

+0

mit all seinen eingeschlossenen Parametern endet mit "das Format des angegebenen Pfades wird nicht unterstützt." was den zusätzlichen Kopfschmerz von gibt, wenn ich den Wert, den ich ändern möchte, nicht lesen kann, wie man die Änderungen zurückschreibt, ohne sie zu beschädigen. Ist eine weitere Konvertierung möglich? – Syone201