0
드라이브의 각 폴더 및 그룹의 각 구성원의 사용자 이름 뒤에 그룹 권한을 가져 오려고 시도한 다음 CSV 파일로 내 보냅니다.폴더 사용 권한의 그룹 가져 오기 및 그룹 구성원 내보내기 csv
문제는 그룹이 그룹 앞에 디렉토리 이름을 가지고 있다는 것입니다. gescogroup/GR_blablabla
이므로 (Remove(0,12))
을 사용하여 Gescogroup\
을 삭제합니다.
내가 알기로는 먼저 사용자가 분석하려는 드라이브의 폴더를 선택하게하고 코드는 드라이브 내부의 폴더를 통해 실행하고 각 폴더에 대해 그룹을 가져온 다음 그룹 이름과 함께 제거 중 "만들기 소유자를,"관리자 ","
이내 코드가 작동하지 않습니다. 나는 회원을 얻어야한다)에 등 "내장,하지만 오류를 얻을 수 없다. 너희들이 나를 도와 드릴까요?
cls
$result = [System.Windows.MessageBox]::Show("Select the path of the drive.`n"+"Once the Drive is selected, a excel file will be made with all the informations`n"+"of the selected Harddrive's directory premissions")
if ($result = "OK")
{
Add-Type -AssemblyName System.Windows.Forms
$FolderBrowser = New-Object System.Windows.Forms.FolderBrowserDialog
[void]$FolderBrowser.ShowDialog()
$Selection = $FolderBrowser.SelectedPath
}
$result2 = [System.Windows.MessageBox]::Show("Pleas select where to save your file")
if ($result2 = "OK")
{
Add-Type -AssemblyName System.Windows.Forms
$FolderBrowser2 = New-Object System.Windows.Forms.FolderBrowserDialog
[void]$FolderBrowser2.ShowDialog()
$FolderBrowser2.Description = "Select where to save your file"
$Selection2 = $FolderBrowser2.SelectedPath
}
$title = "ADPermissions.csv"
$title2 = "ADPermissions2.csv"
$ss =$Selection1 -replace '[\W]', ''
$subtitle = "HardDrive"+ $ss
$OutFile = ($Selection2+"\"+$subtitle+$title)
Write-Host = $OutFile
Remove-Item $OutFile
$Header = "Folder Path,IdentityReference,names"
$RootPath = $Selection
$Folders = dir $RootPath | where {$_.psiscontainer -eq $true}
try {
foreach ($Folder in $Folders){$ACLs = get-acl $Folder.fullname | ForEach-Object { $_.Access }
Foreach ($ACL in $ACLs){
if($ACL.IdentityReference -notlike "Administrators" -and $ACL.IdentityReference -notlike "Creator Owner"-and $ACL.IdentityReference -notlike "BUILTIN\Administrators" -and $ACL.IdentityReference -notlike "NT AUTHORITY\SYSTEM" -and $ACL.IdentityReference -notlike "System")
{
$strAcl = $ACL.IdentityReference
$strAcls = $ACL.IdentityReference.ToString()
[email protected]()
$strNames=$strAcls.Remove(0,12)
$A = Get-ADGroupMember -identity $strNames -Recursive | Get-ADUser -Property DisplayName | Select Name | Sort-Object Name
foreach($strNames in $A)
{
$strUsers+=$A
}
}
}
}
$OutInfo = $Folder.fullname + "," + $trAcl+$strUsers
Add-Content -Value $OutInfo -Path $OutFile | sort-Object -Unique
}catch [System.IO.IOException] {
}
코드를 설명하는 것이 좋습니다. 간단하면 몇 문장만으로 충분합니다. –