Удаление сиротских SID-ов

Dec 04, 2019 09:24


Скрипт запускать из Posh окна с административными правами (.\script.ps1 -path d:\), в качестве параметра -path правильнее давать корень диска, поскольку наследованные права скрипт не удаляет.

Param(
  [Parameter(HelpMessage = 'Enter a directory or file path')]
    [ValidateScript({if ($_ -match '\\'){Test-Path $_}else{$True}})]
    [string]$path
)
$global:arr = @()
   Get-ChildItem -Path $path -Recurse | ForEach-Object -Process {
    $path = $_.fullname.Replace("[", "`[").Replace("]", "`]")
    $acl = Get-Acl -LiteralPath $path
    $sid = $acl.access | Where-Object -FilterScript {
    $_.identityreference -match 'S-1-.*' -and !($_.isinherited)
  }
if($sid)
{
    $sid| ForEach-Object -Process {
    $co = [pscustomobject]@{
    Path = $path
    RemovedSID = $_.identityreference
    }
  $co|Format-List
  $arr += $co
  $null = $acl.removeaccessrule($_)
}
  Set-Acl -LiteralPath $path -AclObject $acl
}
}
'- Report'
$arr|Format-Table -AutoSize

powershell, напоработать

Previous post Next post
Up