PowerShell для управления файлами (часть 3)
- PowerShell для управления файлами (часть 6)
До сих пор в этой серии статей я показывал вам различные методы взаимодействия с файловой системой. Однако вы можете не осознавать, что вы также можете использовать PowerShell для выполнения задач, которые в противном случае потребовали бы от вас использования диспетчера ресурсов файлового сервера. Например, вы можете установить фильтры файлов и квоты через PowerShell.
С учетом сказанного давайте начнем с рассмотрения того, как вы можете установить квоту для папки с помощью PowerShell. Для этого примера я создам папку с именем C:Demo, а затем установлю квоту в 2 ГБ. Для начала давайте продолжим и создадим папку с помощью этих команд:
С:
CD
Демо МД
Get-ChildItem
Первая из этих команд переключает на диск C:. Вторая команда переходит в корневой каталог, а третья команда создает папку с именем Demo. Последняя команда проверяет существование папки, как показано на рисунке ниже:
Я создал папку с именем Demo.
Теперь, когда мы создали папку, нам нужно установить диспетчер ресурсов файлового сервера. В противном случае ни одна из связанных с ним команд PowerShell не будет работать. Вы можете установить диспетчер ресурсов файловой системы, введя следующую команду:
Install-WindowsFeature -Name FS-Resource-Manager -IncludeManagementTools
Вы можете увидеть, как это работает ниже:
Необходимо установить диспетчер ресурсов файлового сервера.
Теперь вы сможете использовать команды, связанные с диспетчером ресурсов файлового сервера, но в некоторых более старых версиях PowerShell может потребоваться сначала вручную импортировать модуль диспетчера ресурсов файловой системы. Вы можете сделать это, набрав:
Import-Module FileServerResourceManager
Теперь, когда все необходимые части расставлены по местам, давайте применим к папке квоту. Для этого используется командлет New-FsrmQuota. При использовании этой команды нам необходимо указать три параметра: Path, Desscription и Size. Путь - это, конечно, имя папки, к которой будет применяться квота. Описание — это текстовое описание квоты, а размер — сама квота. Вот пример используемой команды:
New-FsrmQuota -Путь «C:Demo» -Описание «Папка C:Demo будет иметь квоту 2 ГБ» -Размер 2,0 ГБ
Вы можете увидеть эту команду в действии ниже:
Мы использовали командлет New-FsrmQuota, чтобы применить квоту в 2 ГБ к папке C:Demo.
Команда, которую я вам только что показал, создала так называемую жесткую квоту. Другими словами, на C:Demo была установлена квота в 2 Гб. Предупреждений нет, льготного периода и исключений нет. Однако мы можем немного смягчить ситуацию, чтобы сделать квоту менее драконовской.
Прежде чем мы это сделаем, давайте посмотрим на квоту, а затем удалим ее. Вы можете просмотреть квоту, набрав эту команду:
Get-Quota C:Demo
В качестве альтернативы вы можете ввести командлет Get-Quota без пути. В этом случае будут отображаться все квоты, существующие на сервере.
Мы можем удалить цитату с помощью командлета Remove-FsrmQuota, за которым следует путь, к которому была применена квота. В этом случае команда будет выглядеть так:
Remove-FsrmQuota -Path «C:Demo»
Вы можете увидеть, как это выглядит на рисунке ниже:
Вы можете использовать PowerShell для отображения и удаления квоты.
На рисунке выше ошибка возникла из-за попытки отобразить квоту, которой больше не существует.
Так что, если мы хотим сделать квоту немного менее жесткой? Один из способов сделать это — добавить параметр -SoftLimit в конец командлета New-FsrmQuota. Это говорит PowerShell, что о нарушениях квоты следует сообщать, но не применять их.
Еще одна вещь, которую мы можем сделать, это создать предупреждение, когда папка приближается к пределу квоты. Этот метод немного сложнее, но его можно реализовать с помощью трех строк кода. Вот код, предоставленный Microsoft.
$Action = New-FsrmAction -Type Command -Command "c:windowssystem32cmd.exe" -CommandParameters "echo >> c:log.txt" -ShouldLogError
$Threshold = New-FsrmQuotaThreshold -Percentage 90 -Action $action
New-FsrmQuota -Путь "C:Shares" -Размер 128MB -Порог $Threshold -Softlimit
Здесь много чего происходит, но давайте разобьем это на основные действия. Наша цель — зарегистрировать предупреждающее сообщение, когда папка приближается к пределу квоты. Таким образом, в квоту необходимо включить две части информации. Первым из этих фрагментов информации является пороговое значение. Это процентное значение, указывающее, когда должно быть выдано предупреждение. Приведенный выше код использует 90 в качестве порогового значения, что означает, что он будет генерировать предупреждение, когда будет достигнуто 90% квоты.
Другая вещь, которую мы должны обеспечить, это действие. Мы устанавливаем 90% в качестве нашего порога, но какие действия предпринимаются при достижении порога? Вот что мы должны определить.
Имея это в виду, взгляните на приведенный выше код. Первая строка кода определяет переменную с именем $Action. Эта переменная содержит действие, которое будет выполнено при достижении порога. В этом случае действие включает выполнение команды. Выполняется команда C:windowssystem32cmd.exe. Это заставляет Windows открыть окно командной строки. Далее, есть некоторые параметры команды, которые были определены. В данном случае это «echo >> c:log.txt». Это приводит к записи пути к папке в файл журнала с именем C:log.txt. Echo — это команда командной строки для отображения текста, а >> — команда перенаправления, означающая, что текст, в данном случае путь к исходному файлу, должен быть записан в файл, а не отображаться на экране.
Следующая строка кода начинается с определения переменной с именем $Threshold. Эта переменная устанавливает FsrmQuotaThreshold. Пороговым значением в этом случае будет 90%. Обратите внимание, что на переменную $Action ссылаются через переменную $Threshold и параметр -Action.
Последняя строка кода фактически создает квоту. Эта строка работает очень похоже на то, что вы видели ранее, за исключением того, что Microsoft опустила текст описания и добавила параметр -Threshold и параметр -Softlimit. Параметр -Threshold ссылается на переменную $Threshold, которая устанавливает пороговое значение и пороговое действие. Как упоминалось ранее, параметр -SoftLimit сообщает PowerShell, что ограничение квоты не должно применяться.
Заключительная мысль
Как видите, вы можете использовать Windows PowerShell для создания и удаления квот FSRM. Эти квоты могут быть базовыми или более продвинутыми, устанавливающими пороговые значения и действия.
Между прочим, если вы создадите квоту, а затем решите изменить ее, вам не нужно удалять, а затем заново создавать квоту, как я сделал в этой статье. Я удалил и восстановил квоту только потому, что хотел продемонстрировать, как это сделать. В качестве ярлыка вы можете изменить существующую квоту с помощью командлета Set-FsrmQuota.
В следующей статье этой серии я планирую обсудить файловые экраны FSRM.
- PowerShell для управления файлами (часть 6)