Аудит разрешений с помощью Powershell - PullRequest
0 голосов
/ 03 апреля 2020

Сначала немного предыстории: меня попросили в составе команды Scrum на работе подготовить сценарий Powershell, который сопоставит список общих ресурсов SMB, помеченных как безопасные для архивирования из файлов CSV, которые были данные мне вложены в структуру папок (каждый общий ресурс равен одному CSV-файлу со списком файлов внутри, но единственное значение для этого - это то, что они называются SHARENAME.csv), и текущие разрешения для каждого, если они необходимо восстановить позже.

На данный момент у меня есть следующее для первого шага (легко и просто):

get-childitem -path 'C:\users\adam.lane\desktop\_with adam\_remove' | select BaseName | export-csv -path "..\test.csv"

Это дает мне один файл CSV с имена всех 188 акций в одном столбце. Второй шаг, экспорт CSV-файла для каждого со списком разрешений, также не выполняется. Пока у меня есть следующее:

$share = Import-Csv -path 'C:\users\adam.lane\desktop\_with adam\test.csv' -Header 'BaseName'
ForEach ($share in $share) {
get-smbshareaccess -name $share -cimsession euukpopdfs005
}

Очевидно, что в данный момент там нет команды export-csv, но по сути я хочу, чтобы скрипт использовал то же имя общего ресурса, которое он вызывает с помощью get- smbshareaccess -name 'в качестве имени файла для файла CSV. К сожалению, в этот момент я обнаружил 188 ошибок в следующем формате:

get-smbshareaccess : euukpopdfs005: No MSFT_SMBShare objects found with property 'Name' equal to '@{BaseName=Brand}'.  Verify the value of the property and retry.
At line:3 char:1
+ get-smbshareaccess -name $share -cimsession euukpopdfs005
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (@{BaseName=Brand}:String) [Get-SmbShareAccess], CimJobException
    + FullyQualifiedErrorId : CmdletizationQuery_NotFound_Name,Get-SmbShareAccess
    + PSComputerName        : euukpopdfs005

Поэтому вместо вызова BaseName (например, «Brand» в этом первом случае) он вызывает (@ {BaseName = Brand}: Строка), для которой он ничего не находит.

Могу ли я привести это в порядок? В идеале, в некотором роде, это будет работать как для команды Get-SmbShareAccess, так и для команды export-csv, но я не против делать немного больше поигрований по мере необходимости.

Это мой первый пост, поэтому я извинитесь, если это слишком долго, не хватает подробностей, et c et c. Дай мне знать если тебе нужно что-нибудь еще! Заранее спасибо.


Окончательный (рабочий) код после предложений:

    get-childitem -path 'C:\users\adam.lane\desktop\_with adam\_remove' | select BaseName | export-csv -path "..\test.csv"
$share = Import-Csv -path 'C:\users\adam.lane\desktop\_with adam\test.csv' -Header 'BaseName'
$share | Format-List
ForEach ($item in $share) {
get-smbshareaccess -name $item.BaseName -cimsession euukpopdfs005
}

1 Ответ

0 голосов
/ 14 апреля 2020

Окончательный рабочий код (Спасибо всем!):

get-childitem -path 'C:\users\adam.lane\desktop\_with adam\_remove' | select BaseName | export-csv -path "..\test.csv"
$share = Import-Csv -path 'C:\users\adam.lane\desktop\_with adam\test.csv' -Header 'BaseName'
$share | Format-List
ForEach ($item in $share) {
get-smbshareaccess -name $item.BaseName -cimsession euukpopdfs005
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...