如何使用PowerShell循环访问驱动器中的所有目录

问题描述:

我有下面的powershell脚本,它给了我一个特定文件夹的权限。如何使用PowerShell循环访问驱动器中的所有目录

在下面的脚本,例如我可以得到每个文件夹(包括子文件夹)的权限命名SP目录,

如何可以遍历所有文件夹,而不是具体的targetdirectory中?

$targetServer = '\\tst-server\f$\' #Enter hostname 
$targetDirectory = 'SP' #Enter directory name 
$target   = Join-Path -ChildPath $targetDirectory -Path $targetServer 
$arrResults  = @() #Initialize array used to store custom object output 
$exportPath  = 'C:\Users\adt\Desktop\Scripts\output\FolderPermission.csv' #Enter name of the CSV output file 

#Query target directory for all 'folders' (excludes files via Where statement) 
Get-ChildItem -Recurse -Path $target | Where { $_.PSIsContainer } | 
forEach { 
    $objPath = $_.FullName 
    $coLACL = Get-Acl -Path $objPath 
    forEach ($objACL in $colACL) { 
     forEach ($accessRight in $objACL.Access) { 
      $objResults = New-Object –TypeName PSObject 
      $objResults | Add-Member –MemberType NoteProperty –Name DirectoryPath  –Value $objPath 
      $objResults | Add-Member –MemberType NoteProperty –Name Identity   –Value $accessRight.IdentityReference 
      $objResults | Add-Member –MemberType NoteProperty –Name SystemRights  –Value $accessRight.FileSystemRights 
      $objResults | Add-Member –MemberType NoteProperty –Name SystemRightsType –Value $accessRight.AccessControlType 
      $objResults | Add-Member -MemberType NoteProperty -Name IsInherited  -Value $accessRight.IsInherited 
      $objResults | Add-Member -MemberType NoteProperty -Name InheritanceFlags -Value $accessRight.InheritanceFlags 
      $objResults | Add-Member –MemberType NoteProperty –Name RulesProtected  –Value $objACL.AreAccessRulesProtected 
      $arrResults += $objResults 
     } 
    } 
} 

$arrResults | Export-CSV -NoTypeInformation -Path $exportPath 

你只需要设置PathF:

Get-ChildItem F: -Recurse | Where { $_.PSIsContainer } | Foreach-Object { 
    #do something 
} 
+0

感谢Jisaak,让我给一个尝试。 –

+0

只需将#'目标目录下的两行代码替换为我发布的脚本 –