Я создал этот скрипт, который анализирует определенный каталог "xyz". У меня есть изолированные группы "NETZ", которые имеют доступ к этому каталогу и рекурсивно проходят через них и подсчитывают пользователей (уникальные, повторяющиеся записи удаляются). В конце я экспортировал все это со свойствами "samaccountname" и "name".
Итак, теперь у меня есть количество пользователей в группах "NETZ", которые имеют доступ к этому каталогу.
this is a shortcut
samaccountname Name
-------------- ----
ADM-AD-Task ADM-AD-Task
adm-agayk ADM-agayk
ADM-akorn ADM-akorn
ADM-algoergen ADM-algoergen
ADM-bklann ADM-bklann
ADM-chhuebner ADM-chhuebner
adm-ckaehler ADM-ckaehler
ADM-daneumann ADM-daneumann
ADM-dhorn ADM-dhorn
ADM-dkrzyzostaniak ADM-dkrzyzostaniak
ADM-dmetz ADM-dmetz
this is the output of this variable $workersunique
Теперь, помимо свойств "samaccountname" и "name", я также хочу получить разрешения каждого пользователя. Например, если у пользователя есть права только на чтение или запись. «Какое разрешение имеет каждый пользователь в группах для этого каталога».
Вот мой скрипт
#get all groups of the directory
$GroupFolder = Get-NTFSAccess -Path "\\Vh01tools\xyz"
#remove the NOT NETZ groups
$GroupFolder = $GroupFolder -match "NETZ"
#go through the groups and add the users to a variable
for ($i=0; $i -lt $GroupFolder.length; $i++){
Write-Host $GroupFolder[$i]
$groupsarray = $GroupFolder[$i].Account.ToString()
$groupname = $groupsarray -replace "NETZ\\", ""
echo $groupname
if($groupname -eq "S-PCAdmin") {
echo "Do not add worker"
} else {
echo "add worker"
$workers += Get-ADGroupMember $groupname -Recursive | select samaccountname, Name
}
}
$wn = $workers.Count
echo "There is" $wn "workers."
$workerssorted = $workers | Sort-Object -Property samaccountname, name
$workersunique = $workerssorted | Select-Object -Property samaccountname, name -Unique
$accualworkers = $workersunique.Count
echo "there is" $accualworkers " workers."
# Here i tried to get the **permissions** from each user in the groups but it didn't work. It only gets me the access rights of the mentioned Account "ajenniat" as shown in the output.
Foreach ($m in $workersunique) {
$ma = Get-NTFSEffectiveAccess -Path "\\Vh01tools\xyz" -Account ajenniat
$ma
}
вот что я получаю
PS G:\> C:\Users\yalhares\Desktop\fg.ps1
A 'NETZ\Domain Admins' (FullControl)
Domain Admins
add worker
A 'NETZ\S-ServEDA-VIS' (ReadAndExecute, Synchronize)
S-ServEDA-VIS
add worker
A 'NETZ\S-ServEDA-DIR' (Modify, Synchronize)
S-ServEDA-DIR
# The permissions of the three groups are displayed
add worker
There is
415
workers.
there is
83
workers.
WARNUNG: The user does not hold the Security Privliege and might not be able to read the effective permissions
Path: \\Vh01tools\xyz (Inheritance disabled)
Account Access Rights Applies to Type IsInherited InheritedFrom
------- ------------- ---------- ---- ----------- -------------
NETZ\ajenniat FullControl ThisFolderOnly Allow False
WARNUNG: The user does not hold the Security Privliege and might not be able to read the effective permissions
NETZ\ajenniat FullControl ThisFolderOnly Allow False
Как видите, я могу получить права доступа только от указанного имени пользователя "ajenniat". мне все еще нужно получить разрешения для остальных 82 пользователей.
Я действительно очень сильно хочу, чтобы это заработало. любая помощь будет принята с благодарностью.
Заранее большое спасибо!????
В вашем цикле одним из ваших аргументов является
-Account ajenniat
. Что происходит, когда вы пытаетесь-Account *
?Привет, @Steezy, спасибо за быстрый ответ. Я пробовал это, но это не сработало. который возвращает: Get-NTFSEffectiveAccess : параметр «Учетная запись» не может быть привязан. Значение "*" нельзя преобразовать в тип "Security2.IdentityReference2". Ошибка: «Не удалось перевести некоторые или все ссылки на удостоверения».
Хм, хорошо. Я должен буду изучить это больше. В качестве временной альтернативы вы можете использовать ICACLS для просмотра разрешений. Пример:
icacls "C:\PutYourPathHere"
@Steezy Хорошо, я понял: PS G:\> icacls "\\Vh01tools\xyz" \\Vh01tools\xyz NETZ\Администраторы домена:(OI)(CI)(F) BUILTIN\Administratoren:(OI)(CI) (F) NETZ\S-ServEDA-DIR:(OI)(CI)(M) NETZ\S-ServEDA-VIS:(OI)(CI)(RX)
Таковы права наследования. См. Документацию.
@Стизи, это не работает. Я также пытался его конвейеризировать, но все равно получаю только «имя» и «samaccountname».
$MAsortedandunique = $mitabeidersorted | Select-Object -Property samaccountname, Name -Unique | Get-NTFSEffectiveAccess -Account $mitabeider | select Account, AccessControlType, AccessRights, FullName
. Но это дает мне это: PS G:\> $MAsortedandunique samaccountname Name --------- ---- ADM-AD-Task ADM-AD-Task adm-agayk ADM-agayk ADM-akorn ADM-akorn