PowerShell для управления файлами (часть 5)

Опубликовано: 18 Марта, 2023

  • PowerShell для управления файлами (часть 6)

В предыдущей статье этой серии я немного углубился в диспетчер ресурсов файлового сервера. Для тех, кто не знаком с диспетчером ресурсов файлового сервера, это инструмент Windows Server, который позволяет управлять квотами, файлами и хранилищем. Одна из действительно приятных вещей, которые может сделать диспетчер ресурсов файлового сервера, — это создать фильтр файлов. В этой статье я покажу вам, как это делается.

Основная идея файлового экрана очень проста. Как администратор, вы, вероятно, ожидаете, что пользователи будут сохранять определенные типы данных в определенных местах. Например, папка «Документы» пользователя очень часто содержит файлы документов Microsoft Office и файлы PDF. В то же время существуют типы файлов, которые никогда не должны находиться в определенных местах. Например, вероятно, нет законной причины, по которой пользователю когда-либо понадобится хранить исполняемый файл в папке «Документы». Здесь в игру вступают файловые экраны. Экран файлов позволяет блокировать сохранение определенных типов данных в определенных местах.

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

Если бы вы создавали экран файла через графический интерфейс с помощью диспетчера ресурсов файлового сервера, вам нужно было бы заполнить поля, показанные на рисунке ниже.

Изображение 4550
Это интерфейс, используемый для создания экранов файлов.

Как видно из пути, экран файла состоит из пути и шаблона. В этом конкретном случае аудио- и видеофайлы будут заблокированы от сохранения в любой папке, указанной в поле «Путь к файлу». Итак, давайте посмотрим, как мы можем сделать то же самое с помощью PowerShell.

Первое, что нам нужно сделать, это использовать командлет Get-FsrmFileScreenTemplate для получения списка шаблонов, существующих на сервере. Технически это необязательный шаг, но мне нравится его использовать, потому что при создании файлового экрана вы должны точно ввести имя шаблона. Получение списка шаблонов поможет вам избежать разочарования от почти правильного ввода имени шаблона.

Для создания экрана файлов используется командлет New-FsrmFileScreen. Синтаксис командлета следующий:

New-FsrmFileScreen -Path «<путь к экрану файлов>» -Template «<имя шаблона экрана файлов FRRM>»

Итак, теперь, когда вы знаете основной синтаксис командлета, давайте предположим, что мы хотим заблокировать аудио- и видеофайлы из папки с именем C:Demo. Команда, используемая для этого, будет следующей:

New-FsrmFileScreen -Путь «C:Demo» -Шаблон «Блокировать аудио- и видеофайлы»

Вы можете увидеть, как выглядит этот процесс на рисунке ниже:

Изображение 4551
Вот как вы создаете экран файла FSRM.

Хорошо, а что, если нам нужно проверить экраны файлов FSRM, которые существуют на незнакомом файловом сервере? Что ж, это действительно легко сделать. Ввод командлета Get-FsrmFileScreen без каких-либо дополнительных параметров приведет к тому, что PowerShell отобразит все экраны файлов FSRM, которые существуют на сервере.

Но что, если бы вместо этого нам нужно было подтвердить существование файлового экрана для определенного пути? В такой ситуации мы по-прежнему будем использовать командлет Get-FsrmFileScreen, но добавим параметр -Path вместе с путем, который хотим проверить. Например, если вы хотите проверить путь C:Demo, команда для этого будет следующей:

Get-FsrmFileScreen -Путь «C:Demo»

Вы можете увидеть, как это выглядит на рисунке ниже.

Изображение 4552
Вы можете использовать командлет Get-FsrmFileScreen, чтобы проверить наличие блокировки файлов.

Хотя полезно иметь возможность проверить, какие фильтры файлов (если они есть) применяются к конкретной папке, вам может понадобиться проверить существование фильтров файлов на основе других критериев. Давайте представим на мгновение, что по какой-то причине вам нужно знать каждый путь, к которому был применен шаблон Блокировать аудио- и видеофайлы.

К сожалению, нет встроенного параметра для поиска по всему файловому серверу, чтобы увидеть, где использовался шаблон. Однако вы можете использовать командлет Get-FsrmFileScreen для получения списка всех экранов файлов, существующих на сервере, а затем направить выходные данные в командлет Where-Object. Командлет Where-Object позволяет фильтровать выходные данные на основе определенных атрибутов.

Если вы посмотрите на рисунок выше, вы заметите, что вывод команды разделен на две колонки. В столбце слева перечислены имена различных атрибутов, связанных с экраном файла FSRM. Любой из этих атрибутов можно использовать в качестве фильтра. Следовательно, вы можете отфильтровать вывод на основе шаблона или, возможно, уведомления.

Итак, давайте вернемся к вопросу о том, как найти каждую папку, к которой был применен шаблон «Блокировка аудио- и видеофайлов». Чтобы выполнить эту задачу, вы можете отфильтровать вывод по шаблону. Точная команда:

Get-FsrmFileScreen | Where-Object {$_.Template -eq «Блокировать аудио- и видеофайлы»

Вы можете увидеть результат на рисунке ниже. Кстати, -EQ в команде означает равенство. По сути, фильтр проверяет, соответствует ли имя шаблона экрана каждого файла названию Block Audio and Video Files.

Изображение 4553
Вы можете отфильтровать вывод по шаблону.

Надеюсь, вы видите, как такая команда может быть полезна. Единственным реальным недостатком этой команды является то, что она по-прежнему выводит много данных. Помните, цель состояла в том, чтобы увидеть, какие папки связаны с конкретным шаблоном. Технически мы ответили на этот вопрос, но команда также вернула много данных, которые нас не интересуют. В данном случае это не проблема, потому что существует только один фильтр. Однако представьте, если бы с шаблоном были связаны десятки папок. Результат будет содержать слишком много информации. К счастью, мы можем легко решить эту проблему. Просто используйте ту же команду, что и раньше, но добавьте символ трубы и путь к объекту Select-Object. В выходных данных отображаются только пути к файлам, связанные с указанным шаблоном. Вы можете увидеть, как это выглядит на следующем рисунке.

Изображение 4554
Мы можем написать команду таким образом, чтобы она возвращала только пути к файлам.

Заключительная мысль

Windows позволяет легко создавать экраны файлов и запрашивать их с помощью PowerShell. Тем не менее, есть несколько дополнительных параметров, которые вы можете использовать на экранах файлов. Я покажу вам, как это сделать, в следующей статье.

  • PowerShell для управления файлами (часть 6)