Powershell - передача связанных переменных из списка

Я пытаюсь экспортировать список разрешений 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

0
задан 11 July 2018 в 07:03
1 ответ

Используйте модульный подход с переменными, массивами и циклом 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"
}
2
ответ дан 4 December 2019 в 13:25

Теги

Похожие вопросы