#CompareNetworkACL.ps1
[System.IO.FileInfo] $outputFile = "C:\temp\AclCompareDump.txt"
[System.IO.DirectoryInfo] $searchDirSource = Read-Host -Prompt "Enter source project folder path to search"
[System.IO.DirectoryInfo] $searchDirTarget = Read-Host -Prompt "Enter target project folder path to search"
if ($outputFile.Exists)
{
$outputFile.Delete()
}
if ($searchDirSource.Exists -and $searchDirTarget.Exists)
{
foreach ( $sourceProject in $( Get-ChildItem $searchDirSource | where { $_.psIsContainer -eq $true } ) ) {
$targetProject = Get-Item $($searchDirTarget.FullName + "\" + $sourceProject.Name)
foreach ( $sourceArea in $( Get-ChildItem $sourceProject.FullName | where { $_.psIsContainer -eq $true } ) ) {
$targetArea = Get-Item $($targetProject.FullName + "\" + $sourceArea.Name)
foreach ($sourceTaskFolder in $($sourceArea | Get-ChildItem | where { $_.psIsContainer -eq $true }) ){
$targetTaskFolder = Get-Item $($targetArea.FullName + "\" + $sourceTaskFolder.Name)
$currentAcl = Get-Acl $sourceTaskFolder.FullName
$refacl = Get-Acl $targetTaskFolder.Fullname
Write-Progress -Activity "Searching source for folder ACLs..." -Status ("Comparing " + $sourceTaskFolder.FullName + " to " + $targetTaskFolder.FullName)
$comparison = compare-object $refacl $currentAcl -Property Access
if ($comparison -ne $null)
{
$sourceTaskFolder.Fullname | Out-File $outputFile.FullName -Append
[int] $hits += 1
}
$comparison = $null
}
}
}
if ($hits)
{
& notepad.exe $outputFile.Fullname
}
else
{
Write-Warning "All target ACLs matched the source ACLs."
}
}
Thursday, 10 December 2015
Compare File Permission with powershell instead of calcs , xcacls, Icacls
The following Powershershell is handy, it will compare 2 directories ACLs and report any differences.
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment