Copy-Item копирование файлов и папок из PowerShell

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

Настройка QoS в групповой политике

Можем управлять приоритетом трафика в Windows с помощью настроек QoS. Давайте ограничим скорость данных всех исходящих подключений. Это применимо, даже тогда, когда пользователи копируют файлы с вашего сервера. Используя этот маневр, сможем ограничить скорость для любого приложения, порта или хоста (сайта). Прежде чем начать, убедитесь, что Qos Packet Scheduler включена в сетевом адаптере.

Настройка QoS в групповой политике

Шаг 1. Нажмите Win+R и введите , чтобы открыть редактор групповых политик. Перейдите по параметрам «Конфигурация компьютера» > «Конфигурация Windows» > «QoS на основе политики«. Нажмите правой кнопкой мыши по QoS на основе политики и выберите «Создать новую политику«.

Настройка QoS в групповой политике

Шаг 2. В новом окне придумайте любое имя и ниже в графе «Укажите частоту передачи«, задайте нужном вам скорость для ограничения. Также, уберите галочку с DSCP.

Настройка QoS в групповой политике

Шаг 3. В этом окне вы можете выбрать приложение, процесс или указать сайт. Я в этом примере выбрал ко всем приложениям.

Настройка QoS в групповой политике

Шаг 4. Если у вас несколько сетевых адаптеров, то можно указать IP-интерфейса на своем компьютере, к которому будет применяться данная политика. Также, можено установить IP-адрес назначения, чтобы ограничить для него скорость передачи.

Настройка QoS в групповой политике

Шаг 5. В этом коне можем выбрать протокол TCP, UDP к которому будет применяться политика. Также, можем выбрать порты назначения. Если не уверены, то выбирайте протокол TCP и UDP. Если желаете ограничить скорость доступа к общим файлам в папке SMB, то TCP и порт 445.

Настройка QoS в групповой политике

Всё! В итоге, я выбрал все приложения, порты, протоколы и политика ограничивает максимальную скорость передачи файлов по сети в 300 Кб\с.

Настройка QoS в групповой политике

Если вернуть в групповые политики и нажать правой кнопкой мыши по «QoS на основе политики«, то появятся дополнительные параметры, где мы сможем ограничить входящий TCP-трафик в самой первой вкладке. Выбрав нужные уровни пропускной способности. Ниже будет приведена максимальная скорость данных уровней:

  1. 64 КБ
  2. 256 КБ
  3. 1 МБ
  4. 16 МБ
Читайте также:  Гибернация Windows 7, спящий и гибридный режимы

Выбираем среду разработки и инструменты

Теперь давай разберемся, где удобнее всего писать код. Можно, конечно, и в «Блокноте», Notepad++ или Sublime. Но это в данном случае не самый грамотный выбор редактора. Лучше всего начинать знакомство с PowerShell, вооружившись идущим в комплекте PowerShell ISE.

PowerShell ISE

Выбираем среду разработки и инструменты

Это даже не редактор, а практически полноценная среда разработки. Здесь есть функция IntelliSense, которая позволяет просматривать перечень командлетов и их параметров, переменных, утилит и прочего. Поддерживаются сниппеты, есть возможность расширения нaбора функций за счет различных аддонов. Очень полезно и окно Commands. В нем можно составлять команды в визуальном режиме: выбираешь модуль, находишь нужный командлет и задаешь ему необходимые параметры. Получившуюся команду можно скопировать в консоль или сразу запустить на выполнение. В общем, этакий конструктор для админа. Ну и конечно, есть подсветка синтаксиса, дебаггер и многое другое.

Тем не менее у PowerShell ISE есть и достойные конкуренты. Один из них — Dell PowerGUI.

PowerGUI — это визуальное дополнение к PowerShell. Оно упрощает сборку собственных сценариев до выбора необходимых командлетов. Берешь то, что нужно для решения задачи, и перетаскиваешь части кода, пока не получишь скрипт. Одна из главных фишек PowerGUI — это Power Packs, готовые скрипты, опубликованные сообществом пользователей и выложенные в свобoдный доступ. Тут есть и простенькие команды вроде добавления пoльзователей, и сложные — к примеру, управление свитчами и виртуальными машинaми. Все их легко дополнять и модифицировать в соответствии с нуждами.

Выбираем среду разработки и инструменты

powergui

PowerShell Studio 2015 фирмы Sapien — бoлее продвинутая среда, которая рассчитана на совместную разработку одного проекта большим количеством участников. Если ты когда-нибудь имел дело с Visual Studio, то, думаю, заметишь сходство. Среди полезных фишек PowerShell Studio — панель Ribbon, поддержка удаленной отладки, а также функции компилятора, которые позволяют включить скрипты в исполняемые файлы. Есть поддержка разных версий PowerShell.

Читайте также:  Настройка удалённого подключения RemoteApp к Windows Server 2012

PowerShell Studio 2015

Выбираем среду разработки и инструменты

Стоит упомянуть и Script Browser для Windows PowerShell ISE. Это не среда разработки, но вeсьма интересный инструмент, разработанный в Microsoft. Script Browser открывает доступ к базе готовых скриптов, которые можно использовать в качестве образцов для написания своего кода. А еще эта штука умеет анализировать код, который ты пишешь, и подсказывает, как его улучшить.

Script Browser для Windows PowerShel

Выбираем среду разработки и инструменты

Что делать, если PowerShell не открывается

Если PowerShell не может открыться, то нужно проверить целостность системных файлов:

  1. Необходимо запустить командную строку с расширенными правами доступа.
  2. Затем прописать исполнимую команду «sfc /scannow».
  3. Дождаться завершения процесса проверки файлов.
  4. При необходимости исправить поврежденные компоненты, нажав на кнопку «Enter».

Выполнить отключение компонента PowerShell и заново его активировать:

Что делать, если PowerShell не открывается
  1. Нужно открыть классическую панель управления.
  2. Выбрать раздел «Программное обеспечение».
  3. В правой части окна нажать «Включить или отключить компоненты».
  4. В списке найти нужный объект и снять с него отметку в чекбоксе.
  5. Выполнить рестарт и вновь перейти в «Панель управления». Открыть компоненты Windows и поставить отметку в чекбоксе «PowerShell».

Повер Шелл может не запускаться из-за повреждения системных файлов

Консоль отладки PowerShell скачать для Windows 10 можно на официальном сайте разработчиков программного обеспечения. Открыть утилиту возможно через стартовое меню или выполнить ручной запуск из системной папки. Если PowerShell перестал открываться, нужно произвести сканирование системы и выявить поврежденные файлы. Все инструкции предельно просты, поэтому с ними справится даже новичок.

Копирование с фильтрацией по шаблону

С помощью Copy-Item можно скопировать файлы/директории выбранные с помощью wildcard символа * или с помощью символа ?. Также поддерживаются некоторые регулярные выражения

  • * — обозначает любое количество любых символов
  • ? – обозначает 1 любой символ
  • [a-z], [0-9] – символы между a-z и цифры между 0 и 9

Для примера возьмём такую структуру файлов:

Читайте также:  Как открыть редактор локальной групповой политики Windows 10

Выполним копирование командой:

Copy-Item -Path «C:\SourceFolder\fol*» -Destination «F:\DestFolder\»

Результат в F:\DestFolder\

Теперь чистим папку назначения и выполняем:

Copy-Item -Path «C:\SourceFolder\folder3» -Destination «F:\DestFolder\»

Папка без цифры в окончании не скопировалась, потому что folder1 подразумевает что после folder будет как минимум еще 1 символ между 0 и 3

Современная техника - портал Миникод