Мне нужно распечатать разрешения пользователя для определенной папки.Ниже у меня есть рабочий код.Однако сканирование выполняется только в том случае, если пользователю были специально предоставлены разрешения.Теперь я также хочу проверить, есть ли у группы права доступа к папке.
Я подумал о том, чтобы перечислить все группы, в которых мой пользователь является членом MemberOf, и затем добавить их в общий список.После этого я выполню следующий код для каждой записи этого списка.
$User = "testumgebung\cbruehwiler"
$Path = "T:\"
# Generic list object to store output in
$List = New-Object System.Collections.Generic.List[System.Object]
# Fields we want in list, an array of calculated properties.
$OutputFields = @(
@{name="Item" ; expression={$_.Path.split(':',3)[-1]}}
@{name="Rights" ; expression={$Right.FileSystemRights}}
@{name="AccessType" ; expression={$Right.AccessControlType}}
# @{name="User" ; expression={$User}}
)
# Store all objects in variable
$FileSystemObjects = Get-ChildItem $Path -Recurse | ForEach-Object {Get-Acl $_.FullName}
# Iterate through every object
foreach ($Item in $FileSystemObjects) {
# Iterate through every individual user right within each object
# Add it to our list if it matchers our $User
foreach ($Right in $Item.Access) {
if ($Right.IdentityReference -eq $User) {
$List.Add(($Item | Select-Object $OutputFields))
}
}
}
$List | Out-File C:\Users\cbruehwiler\Desktop\PermissionCheck.txt
В моем списке напечатано имя папки, различные разрешения и, если у него есть доступ или нет.Я действительно не хочу слишком сильно менять структуру.