initial release
This commit is contained in:
parent
d5c10979f1
commit
eec76898cf
|
|
@ -1,13 +1,31 @@
|
||||||
Import-Module ACLReportTools
|
Import-Module ACLReportTools
|
||||||
$WorkDir="$env:LOCALAPPDATA\ps-aclreport"
|
$WorkDir="$env:LOCALAPPDATA\ps-aclreport"
|
||||||
|
$SHARE="esphome"
|
||||||
|
$COMPUTER="localhost"
|
||||||
|
$Date=(Get-Date).ToString("yyyyMMddHHmmss")
|
||||||
|
|
||||||
function createBaselineReport($Computer, $Share){
|
function createBaselineReport($Computer, $Share){
|
||||||
$ShareName="${Computer}-${Share}"
|
$ShareName="${Computer}-${Share}"
|
||||||
$Date=(Get-Date).ToString("yyyyMMddHHmmss")
|
|
||||||
$BaselineName="Baseline_${ShareName}_${Date}"
|
$BaselineName="Baseline_${ShareName}_${Date}"
|
||||||
New-ACLShareReport -ComputerName $Computer -Include $Share -IncludeInherited | Export-ACLReport -Path "${Workdir}\${BaselineName}.acl" -Force
|
New-ACLShareReport -ComputerName $Computer -Include $Share -IncludeInherited | Export-ACLReport -Path "${Workdir}\${BaselineName}.acl" -Force
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function createCurrentReport($Computer, $Share){
|
||||||
|
$ShareName="${Computer}-${Share}"
|
||||||
|
$Date=(Get-Date).ToString("yyyyMMddHHmmss")
|
||||||
|
$CurrentName="Current_${ShareName}_${Date}"
|
||||||
|
New-ACLShareReport -ComputerName $Computer -Include $Share -IncludeInherited | Export-ACLReport -Path "${Workdir}\${CurrentName}.acl" -Force
|
||||||
|
}
|
||||||
|
|
||||||
|
function compareBaselineToCurrent(){
|
||||||
|
$LastBaseline=(Get-ChildItem $WorkDir | Sort-Object LastWriteTime | Where-Object {$_.name -match "Baseline_${COMPUTER}-${SHARE}.*"} | Select-Object -last 1)
|
||||||
|
$Current=(Get-ChildItem $WorkDir | Sort-Object LastWriteTime | Where-Object {$_.name -match "Current_${COMPUTER}-${SHARE}.*"} | Select-Object -last 1)
|
||||||
|
$DiffReportName="DiffReport_${COMPUTER}-${SHARE}_${Date}.acr"
|
||||||
|
$BaselineImport=(Import-ACLReport -Path $LastBaseline.FullName)
|
||||||
|
New-Item -ItemType Directory -Path $WorkDir -Name "DiffReports" -Force -ErrorAction SilentlyContinue | Out-Null
|
||||||
|
Compare-ACLReports -Baseline $BaselineImport -ComputerName $COMPUTER -Include $SHARE | Export-ACLPermissionDiff -Path "$WorkDir\DiffReports\$DiffReportName" -Force -WarningAction SilentlyContinue
|
||||||
|
}
|
||||||
|
|
||||||
function pruneBaselineReports(){
|
function pruneBaselineReports(){
|
||||||
$reg="([a-zA-Z]+_.*)_\d{4}\d{2}\d{2}\d{2}\d{2}\d{2}\.acl"
|
$reg="([a-zA-Z]+_.*)_\d{4}\d{2}\d{2}\d{2}\d{2}\d{2}\.acl"
|
||||||
$ReportGroups=(Get-Childitem -Path $WorkDir) | Sort-Object -Property Name | Where-Object {$_.name -match "([a-zA-Z]+_.*)_\d{4}\d{2}\d{2}\d{2}\d{2}\d{2}\.acl"} | Group-Object -Property {$Matches[1]}
|
$ReportGroups=(Get-Childitem -Path $WorkDir) | Sort-Object -Property Name | Where-Object {$_.name -match "([a-zA-Z]+_.*)_\d{4}\d{2}\d{2}\d{2}\d{2}\d{2}\.acl"} | Group-Object -Property {$Matches[1]}
|
||||||
|
|
@ -19,4 +37,22 @@ function pruneBaselineReports(){
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
pruneBaselineReports
|
function pruneCurrentReports(){
|
||||||
|
#Current to new Baseline and delete or just rename
|
||||||
|
$Current=(Get-ChildItem $WorkDir | Sort-Object LastWriteTime | Where-Object {$_.name -match "Current_${COMPUTER}-${SHARE}.*"} | Select-Object -last 1)
|
||||||
|
Rename-Item -Path $Current.FullName -NewName "Baseline_${COMPUTER}-${SHARE}_${Date}.acl"
|
||||||
|
}
|
||||||
|
|
||||||
|
# If there's no baseline, create one, then die
|
||||||
|
if(!((Get-ChildItem $WorkDir) | Where-Object {$_.Name -match "Baseline_${COMPUTER}-${SHARE}.*"})){
|
||||||
|
createBaselineReport $COMPUTER $SHARE
|
||||||
|
exit 0
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
createCurrentReport $COMPUTER $SHARE
|
||||||
|
compareBaselineToCurrent
|
||||||
|
#After comparing Current to Baseline
|
||||||
|
pruneCurrentReports
|
||||||
|
# Delete old Reports
|
||||||
|
pruneBaselineReports
|
||||||
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue