The company I’m working for has a GPO which maps drives for users who are members of certain groups to letters and paths. We’re converting these GPOs to a new system which dynamically maps users using a logon script which looks for users in groups with a standard naming convention and in a certain OU and maps them to the path in the group description field. The migration process sometimes has errors, and I’d like to write a script to double check the process used by another group. I saw a posting by Tobias Weltner which looked like it would be a good start:
$Xml.Machines.Machine | Where-Object { $_.Name -eq 'Server0009' } | Select-Object -Property IP, {$_.Information.info1}
What I’m trying to do is look in every
$GPO_report.gpo.user.extensiondata.extension.drivemapsettings.drive node and pull every $GPO_report.gpo.user.extensiondata.extension.drivemapsettings.drive.properties.path $GPO_report.gpo.user.extensiondata.extension.drivemapsettings.drive.properties.letter $GPO_report.gpo.user.extensiondata.extension.drivemapsettings.drive.filters.filtergroup.name
where the $GPO_report.gpo.user.extensiondata.extension.drivemapsettings.drive.filters.filtergroup.name -matches a group name entered in read-host or a gui menu.
Everything I’ve tried results in ALL of the paths, letters, or group names being returned, not just the ones associated with the group name entered.
Examples:
$GPO_report.gpo.user.extensiondata.extension.drivemapsettings.drive | ? {$GPO_report.gpo.user.extensiondata.extension.drivemapsettings.drive.filters.filtergroup.name -match "EU_Country_drivemap_GPO"} | select ($GPO_report.gpo.user.extensiondata.extension.drivemapsettings.drive.properties).path
and
$GPO_report_drives = $GPO_report.gpo.user.extensiondata.extension.drivemapsettings.drive foreach ($GPO_report_drive in $GPO_report_drives) { if ($GPO_report.gpo.user.extensiondata.extension.drivemapsettings.drive.filters.filtergroup.name -match "EU_Country_drivemap_GPO") { $GPO_report.gpo.user.extensiondata.extension.drivemapsettings.drive.filters.filtergroup.name $GPO_report_drive.properties.path $GPO_report_drive.properties.letter } }
Below is an example of one drive node:
q1:Drive clsid=“{935D1B74-9CB8-4e3c-9914-7DD559B7A417}” name=“P:” status=“P:” image=“2” changed=“2011-06-21 15:32:03” uid=“{3BCD4228-1598-45BE-A994-DF073740B745}” userContext=“1” bypassErrors=“1”>
<q1:GPOSettingOrder>8</q1:GPOSettingOrder>
<q1:Properties action=“U” thisDrive=“NOCHANGE” allDrives=“NOCHANGE” userName=“” path=“\servername\Public” label=“Country PUBLIC” persistent=“1” useLetter=“1” letter=“P” />
<q1:Filters>
<q1:FilterGroup bool=“AND” not=“0” name=“Domain\EU_Country_drivemap_GPO” sid=“S-1-5-21-1417001333-790525478-839522115-749829” userContext=“1” primaryGroup=“0” localGroup=“0” />
</q1:Filters>
</q1:Drive>
I’m trying to produce output like: Groupname Driveletter Path
for every drive letter and path for each group.
I’ll keep trying, but if someone has a solution or can point me in the right direction, I’d appreciate it.