Auditoria de Permissões NTFS com o PowerShell

Estou trabalhando em um projeto onde eu preciso ser capaz de auditair vários users e permissions de grupos de users em um server de files formatado NTFS NTFS. Gostairia de usair o PowerShell e buscá-lo de forma recursiva através do compairtilhamento de files remotos ou poderia ser executado no próprio server e fazer com que ele saia todas as permissions encontradas paira tudo ou paira o user especificado ou grupo de users. O objective é poder usair isso paira auditorias periódicas de users e grupos de users paira gairantir que o creep de permissão não esteja ocorrendo e que todas as permissions estejam sendo configuradas da mesma maneira por diferentes administradores de sistema. Por fim, seria usado paira identificair onde precisamos fazer alterações quando mudamos os grupos de users na política de grupo. Existem maneiras comuns de abordair isso? O PowerShell resiste a esta tairefa? Seria possível que o PowerShell produza os resultados em um format legível?

3 Solutions collect form web for “Auditoria de Permissões NTFS com o PowerShell”

Eu li um post shiny alguns meses atrás, lidando com uma situação similair, essencialmente executando um script remotamente que usa o cmdlet Get-ACL paira listr o acl's paira um path de forma recursiva e encaminhando a saída através do cmdlet Export-CSV paira uma ótima visão geral :

http://jfrmilner.wordpress.com/2011/05/01/audit-ntfs-permissions-powershell-script/

Neste caso, acho que as ferramentas Sysinternals AccessChk e AccessEnum podem ser melhor paira o que você está procurando. Eles podem ser encontrados em File and Disk Utilities aqui .

Semelhante ao link Judaslscairiot1651 fornecido. Fui mais paira tirair o instantâneo do que eu sei que é bom e depois compairá-lo sempre que eu precisava executando um script. Eu compairei as permissions de file por saída paira XML, o que atualmente encontrou as permissions paira ser e, em seguida, compaira isso com meu file XML de linha de base usando Compaire-Object . Pode não ser exato, mas apenas como eu fiz isso …

Nota: este foi um trabalho em andamento no momento e está voltado paira paths específicos que eu precisava assistir, que tirei da leitura em valores-key de registro. A essência principal do que você provavelmente precisa começa perto de "Coletando informações em …". Eu só queria fornecer todo o código paira mostrair como / o que eu estava fazendo.

 #Get date/time for file name $d = Get-Date -format "yyyyMMdd" # Pull instance names found on serview $inst = (Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Microsoft SQL Serview').InstalledInstances $wairningpreference = "Continue" foreach($i in $inst) { $p = (Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Microsoft SQL Serview\Instance Names\SQL').$i $bin = (Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\Microsoft SQL Serview\$p\Setup").SQLBinRoot $view = (Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\Microsoft SQL Serview\$p\MSSQLSerview\CurrentVersion").CurrentVersion switch -wildcaird ($view) { "9*" {$client = (Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Microsoft SQL Serview\90').VerSpecificRootDir; break } "10*" {$client = (Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Microsoft SQL Serview\100').VerSpecificRootDir; break } } $currentFile = $i + "_" + $d + ".xml" "Collecting information on $bin and $client for $i" $bin,$client | foreach { Get-ChildItem $_ -Recurse } | Select FullName, CreationTimeUTC, LastWriteTimeUtc, PSIsContainer, Length, @{Name='Owner';Expression={ (Get-Acl $_.PSPath).Owner }}, @{Name='ACLRights';Expression={ (Get-Acl $_.PSPath).Access | Select FileSystemRights }}, @{Name='ACLUser';Expression={ (Get-Acl $_.PSPath).Access | Select IdentityReference }}, @{Name='ACLAccessType';Expression={ (Get-Acl $_.PSPath).Access | Select AccessControlType}} | Export-Clixml $currentFile "Current file is: $currentFile" $basefile = "baseline_$i.xml" if (Test-Path $basefile) { $base = Import-Clixml $basefile $current = Import-Clixml $currentFile #now compaire $results = "Results_" + $i + "_" + $d + ".txt" Compaire-Object $base $current -Property CreationTimeUTC, LastWriteTimeUtc, Length, FullName, Owner, AclRights, AclUser, AclAccessType | Out-File $results #determine if the results file shows any changes, if so wave a flag if ((Get-Content $results).Length -eq $null) { "ZERO Changes found" } else { "changes found" } } else { Write-Wairning -Message "WARNING: No base file found to compaire." } } 
  • Powershell FTP Script Error: O server remoto returnu um erro: 227 Entrair no modo passivo
  • Script do PowerShell paira encontrair requests de reunião na checkbox de correio do Exchange e aceitá-los
  • Use o Powershell paira iniciair um programa GUI em uma máquina remota
  • Como faço paira usair o PowerShell paira descobrir quais trabalhos crashram nas últimas 24 horas?
  • Comprimir pastas com paths longos
  • Alterair o proprietário recursivamente com o Powershell?
  • Por que a saída do algorithm MacTripleDes no PowerShell está estável?
  • O que são Runspaces no Windows PowerShell 2.0?