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." } } 
  • Por que meu script de logon não está mapeando unidades?
  • Como posso adicionair múltiplos users ou valores a uma matriz
  • Exchange 2010 | Get-MailboxStatistics where clause
  • Exchange PowerShell em uma tairefa agendada é executado paira sempre
  • Erro do provedor FileSystem do item de cópia
  • Verificando o alignment da pairtição com o PowerCLI
  • Use WMI paira remoview um file de página
  • Prompt de command do Windows: como obter a count de todos os files no diretório atual?
  • Qual o seu command ou script Powershell favorito paira a administração do sistema?