Я пытаюсь экспортировать список разрешений ACL отформатированных папок для ограниченного набора папок на файловом сервере. У меня есть список папок, из которых нужно считывать разрешения, и список имен файлов, для которых я хочу вывести разрешения ACL.
Folder Name to report file
1) E:\share\Legal > D:\reports\legal.txt
2) E:\share\Ops > D:\reports\ops.txt
3) E:\share\Exec > D:\reports\exec.txt
Мне нужно сделать 150 из них.
У меня есть команда powershell, которая выдаст именно то, что мне нужно:
(get-acl "E:\share\Legal").access | ft IdentityReference,FileSystemRights,AccessControlType,IsInherited,InheritanceFlags -auto > e:\report\legal.txt
Я знаю, что мне нужно определить переменную (например, $ path) и, возможно, другую переменную (например, $ output), но как связать один список с другим, чтобы что правильная переменная $ path выровнена со связанной переменной $ output? У меня так много ограничений в этой области, что поиск в Google ведет меня слишком далеко.
ОБНОВЛЕНИЕ: Моя заявленная проблема еще не решена, но я значительно улучшил свой сценарий и итоговый файл данных. Выяснилось, что мой вывод csv не работает, потому что я использовал «ft» вместо «select» для сетки данных. Я также удалил ненужную строку из вывода CSV с помощью «-notypeinformation» (или «-nti» для краткости)
(get-acl "E:\share\Legal").access | Select IdentityReference,FileSystemRights,AccessControlType,IsInherited,InheritanceFlags | Export-csv e:\report\legal.csv -nti
UPDATE2: Ответ LotPing, включая мои последующие изменения исходного сценария:
## Q:\Test\2018\06\23\sf_917865.ps1
$BaseDir = 'E:\share\'
$BaseRep = 'D:\reports\'
$Folders = @('Legal','Ops','Exec')
$Rights = @('IdentityReference',
'FileSystemRights',
'AccessControlType',
'IsInherited',
'InheritanceFlags')
ForEach ($Folder in $Folders){
(Get-Acl "$BaseDir$Folder").Access |
Select $Rights | Export-CSV "$BaseRep$Folder.csv" -nti
}
Для всех, кто сталкивался с та же задача, последняя часть моей задачи состояла в том, чтобы импортировать все эти выходные файлы в книгу Excel в виде отдельных рабочих листов, что я сделал в Excel, используя скрипт VBA, найденный здесь, https://www.extendoffice.com/ документы / excel / 3230-excel-import-multiple-csv-files. html # a1
Используйте модульный подход с переменными, массивами и циклом ForEach.
## Q:\Test\2018\06\23\sf_917865.ps1
$BaseDir = 'E:\share\'
$BaseRep = 'D:\reports\'
$Folders = @('Legal','Ops','Exec')
$Rights = @('IdentityReference',
'FileSystemRights',
'AccessControlType',
'IsInherited',
'InheritanceFlags')
ForEach ($Folder in $Folders){
(Get-Acl "$BaseDir$Folder").Access |
Format-Table $Rights -auto > "$BaseRep$Folder.txt"
}