Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Права пользователей на папку (http://forum.oszone.net/showthread.php?t=186203)

tarasov.evgeny 22-09-2010 18:46 1501957

Права пользователей на папку
 
Добрый день.
Выполняю вот такую команду:
Код:

get-childitem c:\folder -recurse | get-acl | format-table -wrap -GroupBy Access | out-file c:\file.csv -width 500
Получаю нормальный результат на папку и вложенные папки.
Хочу избавиться от столбца Owner вот такой командой:
Код:

get-childitem c:\folder -recurse | get-acl | format-table -wrap -GroupBy Access -Property Path, Access | out-file c:\file.csv -width 500
В результате получаю не то, чтобы хотелось:
{System.Security.AccessControl.FileSystemAccessRule, System.Security....} перед путем до файла или папки и вместо прав доступа всех пользователей

tarasov.evgeny 06-10-2010 15:35 1512812

Попробовал сделать так:
Код:

PS > Get-Acl | Select-Object Access,Path | Format-List

Access : {System.Security.AccessControl.FileSystemAccessRule, System.Security.AccessControl.FileSystemAccessRule, System.Security.AccessControl.FileS
ystemAccessRule, System.Security.AccessControl.FileSystemAccessRule...}
Path : Microsoft.PowerShell.Core\FileSystem::C:\Documents and Settings\tarasov.evgeny

tarasov.evgeny 28-11-2010 23:00 1553753

Поздравьте меня :).
Я нашел ответ. Ура.
Не прошло и полгода...
Но лучше позже, чем никогда.
Код:

$a=(Get-Acl).Path
(get-acl).Access | Format-Table AccessControlType, FileSystemRights, '
IdentityReference, @{Label="Path"; Expression={$a -replace (".*::", "")}}

В данном случае, выдается результат к текущей папке.
AccessControlType - это либо разрешено, либо запрещено
FileSystemRights - это Чтение, изменение, и т.п.
IdentityReference - это кому права выданы
Path - путь до текущей папки.

Есть вопрос по поводу replace. Вопрос главным образом к amel27 (поскольку именно он подсказал мне как быть в аналогичной ситуации), но буду рад любому, кто подскажет.
Вот в этом посте http://forum.oszone.net/thread-188363.html фигурирует такой скрипт:
Код:

.......
ForEach-Object {"UserName: " + [regex]::replace($_.UserName,".*\\","")}
.......

Что и зачем идет после слова -replace понятно более или менее. Первые две ковычки - это что, второе две кавычки - это на что поменять...
[regex] - это скорее всего обозначение, что регулярные выражение используются в замене.
Где можно про это прочитать(ткните носом), просто в моем варианте :
Код:

{$a -[regex]::replace (".*::", "")}}
- выдает ошибку - неожиданные токен "(".

tarasov.evgeny 29-11-2010 10:45 1553956

Добрый день,

решил попробовать всё это сконвертить в html:
Задача получать только список доменных пользователей + заменить название столбцов на русские или более понятные.
Следующий этап, сравнивать два файла и получать на выходе отчет (каждый день) об внесенных изменениях за день
Код:

$path=(Get-Acl).Path
(get-acl).Access | Where-Object {$_.IdentityReference -like "domen*"} | '
ConvertTo-Html -Property AccessControlType, FileSystemRights, '
@{Label="Пользователь"; Expression={$_.IdentityReference}},'
@{Label="Папка или файл"; Expression={$path -replace (".*::", "")}} | '
Out-File c:\get_acl.htm



Если заменить
Код:

@{Label="Пользователь"; Expression={$_.IdentityReference}}
на
Код:

@{Label="Пользователь"; Expression={$_.IdentityReference -replace ".*\", ""}}
то этот столбец оказывается пустым.
Что делаю не так?
Вот правильный ответ:
Код:

@{Label="Пользователь"; Expression={$_.IdentityReference -replace (".*\\", "")}}


Время: 11:18.

Время: 11:18.
© OSzone.net 2001-