#--------------------------------------------------------------------------------------------------#
Set-Variable -name accountDomain -option Constant -value "ASIA"
Set-Variable -name accountsAMAccountName -option Constant -value "DesktopTeam"
Set-Variable -name workingDomain -option Constant -value "asia.ad.mycompany.local"
Set-Variable -name matchFilter -option Constant -value "Workstation"
Set-Variable -name outputFile -option Constant -value ($workingDomain + "-" + $matchFilter + ".csv")
#--------------------------------------------------------------------------------------------------#
if((Get-Host).Version.Major -ne 2) {
Write-Host "You must have PowerShell V2 installed to use this script. Exiting!" -foregroundColor Red
exit
}
if(!(Get-Module -ListAvailable | Where-Object { $_.Name -eq "GroupPolicy" }).Name) {
Write-host "Unable to locate the GroupPolicy module. Exiting!" -foregroundColor Red
exit
}
Import-Module -Name GroupPolicy
$badGpos = @()
$gpoList = Get-GPO -All -Domain $workingDomain | Where-Object { $_.DisplayName -match $matchFilter }
foreach($gpo in $gpoList) {
$gpoPermissions = Get-GPPermissions -guid $gpo.Id -Domain $workingDomain -All
$found = $false
foreach($gpoPermission in $gpoPermissions) {
if($gpoPermission.Trustee.Domain -eq $domain -and $gpoPermission.Trustee.Name -eq $sAMAccountName) {
$found = $true
}
}
if($found -eq $false) {
$badGpos += $gpo
}
}
$badGpos | Export-Csv -path $outputFile -noTypeInformation
Remove-Module -Name GroupPolicy
Monday, April 11, 2011
Audit Group Policy Objects
I needed to review a group of Group Policy Objects and determine if an Active Directory group is listed in the permissions for the GPO. If it was not, I needed to be aware of it. In the code sample, I take advantage of the Group Policy module to loop through all the GPOs in a domain that have "Workstation" in the display name, identify the ones that do not include the "ASIA\DesktopTeam" in the permission list and output them to a comma separated values text file.
Labels:
Active Directory,
Group Policy Objects,
PowerShell
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment