Powershell удалить все файлы в папке

Обновлено: 06.07.2024

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

Используйте PowerShell для удаления файлов и папок

  1. Откройте Windows PowerShell
  2. Определите папку
  3. Используйте команду "Удалить элемент".

Вот подробная инструкция.

Удаление одного файла с помощью PowerShell

Для начала вам нужно открыть PowerShell. Для этого вы можете нажать Win+X и выбрать из списка Windows PowerShell. Кроме того, вы можете найти его в поле поиска на панели задач. После этого введите следующую команду-

Это основная форма команды.

Предположим, что у вас есть файл с именем TWC.jpg в папке TWC на ​​рабочем столе. Чтобы удалить его с помощью Windows PowerShell, вам нужно ввести эту команду-

Как удалять файлы и папки с помощью Windows PowerShell

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

Удалить одну папку с помощью PowerShell

Если вы хотите удалить папку с помощью Windows PowerShell, вам нужно ввести команду, как упоминалось ранее-

Предположим, что у вас на рабочем столе есть папка TWC. Если вы хотите удалить его, вам нужно ввести эту команду-

Если папка пуста, она будет немедленно удалена. Однако, если в папке есть файлы, вам необходимо подтвердить удаление, нажав кнопки Y и Enter.

Удаление нескольких файлов с помощью PowerShell

Если вам нужно удалить несколько файлов, вам нужно ввести другую команду. Команда выглядит одинаково, но есть небольшая разница.

Вам нужно ввести все пути к файлам таким образом. Например, у вас есть один файл с именем TWC.jpg на рабочем столе и другой файл с именем TWC1.txt в папке «Загрузки». Чтобы удалить их сразу, вы можете ввести следующую команду-

Удаление нескольких папок с помощью PowerShell

Как и при удалении нескольких файлов, такая же команда используется для удаления нескольких папок с помощью Windows PowerShell. Например, вы можете использовать такую ​​команду:

Эта команда одновременно удалит папку TWC с рабочего стола и папку TWC1 из папки «Загрузки».

К вашему сведению, если вы воспользуетесь этими командами, ваши файлы и папки будут удалены навсегда. Другими словами, вы не можете найти их в корзине.

Проверка элементов внутри папки

Если вы не можете открыть папку, но хотите узнать об элементах, вы можете использовать эту команду-

Если у вас на рабочем столе есть папка с именем TWC, вам нужно ввести следующую команду, чтобы открыть все:


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

Проверить время последнего изменения и время создания

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


Вы можете найти три столбца со всеми именами файлов и другими данными.

Принудительно удалить элемент

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

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

Удалить без подтверждения

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


После ввода этой команды ваша папка или файл будут удалены навсегда без какого-либо подтверждения.

Исключить файлы определенного типа

Предположим, что у вас есть несколько типов файлов, таких как TXT, PNG, DOCX, PDF и т. д., и вы хотите удалить все элементы, кроме файлов TXT. В этом случае вы можете использовать параметр -exclude. Команда выглядит так:

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

Надеюсь, эти команды будут вам полезны.

Дата: 16 декабря 2020 г. Метки: PowerShell

Похожие записи


Команда Install-Module была найдена в модуле PowerShellGet, но модуль не может быть загружен

список запущенных сервисов

Как экспортировать список служб Windows с помощью командной строки

PowerShell Получить -Appxpackage не работает

Доступ к PowerShell Get-Appxpackage запрещен, не распознан или не работает

[электронная почта защищена]

Судип любит использовать новейшие технологии и гаджеты. Помимо того, что он пишет обо всем, что связано с технологиями, он увлекается фотошопом и увлекается футболом.

Я хочу удалить все файлы из структуры папок, поэтому у меня остается пустая структура папок.

Можно ли этого добиться с помощью пакетного сценария или сценария VBScript?

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

Что вы можете предложить?

Вы имеете в виду рекурсивное удаление? Это действительно можно сделать. Что-то вроде rd /s /q "c:\folder a выполнит рекурсивное удаление всех файлов и папок в папке A

Сейчас самое подходящее время для изучения. Я бы исследовал синтаксис пакетов и vbs для устаревших целей, но уделил бы больше времени изучению PS.

У меня еще не было возможности проверить код, хотя я уверен, что он сработает. Я вернусь и выберу наиболее подходящий ответ на мой первоначальный вопрос.

Поддержу рекомендацию @BigHomie — я только что немного изучил PowerShell, и должен сказать, что это довольно удобно — не слишком сложно, хорошее оружие в арсенале любого программиста. Я использую его довольно часто.

16 ответов 16

Этого можно добиться с помощью PowerShell:

Эта команда получает каждый дочерний элемент в $path , выполняет метод удаления для каждого из них и работает довольно быстро. Структура папок остается неизменной.

Если у вас могут быть файлы без расширения, используйте

Похоже, что параметр -File мог быть добавлен после PowerShell v2. Если это так, то

Это должно сработать для файлов с расширением.


Разве они не могут реализовать powershell --version ? Разве они не могут использовать номер версии с положительными цифрами? Это просто безумие. Более 1300 голосов за вопрос, как узнать номер версии программы?

Короткий и понятный PowerShell. Не знаю, с какой минимальной версией PS он будет работать.

Это должен быть принятый ответ, вы даже можете просто набрать rm *, так как это не рекомендуется принудительно (в любом случае в диалоговом окне подтверждения есть опция «Да для всех»).

Это красиво и просто, но это не совсем то, о чем просил ОП. Он хотел оставить структуру папок на месте (но только удалить файлы). Это удалит файлы и папки, и вы останетесь ни с чем.

это приведет к удалению всего внутри папки (включая подпапки), но OP хотел сохранить все подпапки.

Вы можете сделать это с помощью команды del:

Переключатель /S предназначен для рекурсивного удаления только файлов.

Да. А для удаления скрытых и системных файлов выполните attrib -s -r -h Folder\*.* /s /d перед удалением. А для разрешений используйте команду takeown.


Читая между строк ваш первоначальный вопрос, я могу предложить альтернативную строку кода BATCH, которую вы можете использовать. Что это будет делать при запуске, так это удалять только файлы старше 60 дней. Таким образом, вы можете поместить это в запланированное задание, и когда оно запустится, оно удалит лишние файлы, которые вам не нужны, а не сдует весь каталог. Вы можете изменить 60 на 5 дней или даже 1 день, если хотите.Это не удаляет папки.


Спасибо за идею, но в настоящее время я думаю, что процесс "опорожнения" будет завершен в очень незапланированные временные рамки. Я сохраню этот код на будущее! Удачи!

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

В этой статье вы узнаете обо всех способах удаления файлов из вашей системы с помощью PowerShell.

Начнем!

Оглавление

Предпосылки

В этой статье представлены примеры использования PowerShell, и если вы планируете следовать ей, вам потребуется следующее.

  • Компьютер под управлением Windows 10 или более поздней версии.
  • Windows PowerShell 5.1 или PowerShell 7.0
  • Редактор сценариев, например Visual Studio Code, Atom или Notepad++.

Использование команды Remove-Item для удаления файлов

Когда вам просто нужно использовать PowerShell для удаления файла, вы, вероятно, сразу узнаете о командлете Remove-Item. Этот командлет является стандартом де-факто для удаления файлов с помощью PowerShell.

Использование команды Remove-Item в сочетании с командлетом Get-ChildItem для чтения файлов и папок, а также мощного конвейера PowerShell может значительно упростить задачу.

Знаете ли вы, что командлет Remove-Item имеет псевдоним del ? При работе в PowerShell использование команды Remove-Item или del приведет к выполнению одной и той же команды.

Использование PowerShell для удаления файла

Первый наиболее полезный пример — самый простой, т. е. удаление одного файла. Чтобы удалить только один файл, вам нужно всего лишь использовать команду ниже. Приведенный ниже код удаляет файл C:\temp\random.txt.

Выполнение приведенного выше кода в PowerShell ничего не отобразит на экране, если только не возникнет ошибка.

Использование PowerShell для удаления всех файлов в папке

В этом примере приведенный ниже код удаляет все файлы в папке. Командлет Get-ChildItem нацелен на C:\temp с помощью параметра -Path. Параметр -File указывает, что единственным типом элементов, которые должны быть включены, являются файлы. Get-ChildItem игнорирует папки.

Вывод должен выглядеть так, как показано на скриншоте ниже.

Успешно удалено все файлы в папке

Успешно удалены все файлы в папке

Использование PowerShell для рекурсивного удаления всех файлов

В предыдущем примере удалялись только файлы в папке C:\temp. Если вам нужно также удалить файлы внутри каждого подкаталога, вам нужно добавить переключатель -Recurse в командлет Get-ChildItem, чтобы получить все файлы рекурсивно.

Выполнение приведенного выше кода заставляет PowerShell просмотреть все вложенные папки и получить весь список файлов. Вывод ниже показывает, что код смог удалить файлы в верхней папке; однако не удалось получить файлы во вложенных папках.

 Не удалось получить файлы в подпапках

Не удалось получить файлы во вложенных папках

Решение проблемы длинного пути

Ошибка, показанная выше, указывает на то, что PowerShell «не удалось найти часть пути». Эта ошибка указывает на то, что путь, который пытается получить командлет, не существует, что вводит в заблуждение. .

В данном случае ошибка возникла из-за того, что путь, который Get-ChildItem пытается прочитать, превышает максимальную длину пути, равную 260 символам.

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

Вложенные каталоги создание длинного имени пути

Вложенные каталоги, создающие длинное имя пути

В Windows PowerShell 5.1 есть решение проблемы с длинным путем. Обходной путь — использовать Unicode-версию пути. Вместо того, чтобы указывать такой путь — C:\temp, используйте версию Unicode, например, '\\?\C:\temp' для папок, расположенных локально, или '\\?\UNC\ \\Temp', если папка находится в пути UNC.

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

 Удалил файл с длинным путем

Удален файл с длинным путем

Обратите внимание, что проблема с длинным путем не затрагивает PowerShell 7.0. В PowerShell 7.0 нет необходимости использовать Unicode-версию пути, поскольку в ней уже есть встроенная поддержка длинных имен путей.

Если нужно удалить и папки, просто удалите параметр -File из командлета Get-ChildItem, и PowerShell удалит все элементы, включая файлы и папки.

Использование PowerShell для удаления файлов старше x дней

Другим типичным примером очистки дискового пространства является удаление файлов, возраст которых превышает определенное количество дней. Этот пример полезен для удаления старых файлов журналов, например файлов, созданных веб-серверами IIS, для освобождения места на диске.

В этом примере в c:\temp есть файлы старше 14 дней. С помощью приведенного ниже скрипта отображаются Name , CreationTIme и AgeInDays каждого файла в c:\temp.

Как видно на снимке экрана ниже, есть файлы возрастом 15 дней, 7 дней и 0 дней.

Список файлы в c:\temp

Список файлов в c:\temp

Теперь, когда вы знаете, какие файлы нужно удалить, вы можете создать сценарий, который будет удалять только файлы старше определенного количества дней, в данном случае старше 14 дней.

В приведенном ниже примере сценария файлы в папке C:\temp, значение CreationTime которых старше установленного порога, будут удалены.

Первая строка определяет путь для поиска Get-ChildItem. Путь сохраняется в переменной $path. Затем во второй строке указывается пороговое значение. Значение $threshold — возраст в днях, которому должен соответствовать удаляемый файл.

Следующая строка кода после переменной $threshold будет:

  • Получить набор файлов, расположенных в папке, указанной в переменной $path. В этом примере путь C:\temp.
  • Отфильтруйте выходные данные, чтобы включить только файлы, значение CreationTime которых старше, чем число дней, сохраненное в переменной $threshold. В этом примере порог – 14 дней.
  • Передайте отфильтрованный список файлов в значение Remove-Item, чтобы выполнить удаление этих файлов.

Когда вы запустите приведенный выше код, вы увидите вывод, как показано ниже.

Скрипт удалил файлы старше 14 дней

Скрипт удалил файлы старше 14 дней

Обратите внимание, что на снимке экрана выше, судя по подробному сообщению, сценарий удалил только пять файлов старше 14 дней. Чтобы убедиться, что файлы старше 14 дней все еще существуют, запустите приведенный ниже код, чтобы снова просмотреть их.

Результат ниже подтверждает, что команда Remove-Item не удалила более новые файлы.

Новые файлы остаются нетронутыми

Новые файлы остаются нетронутыми

Использование PowerShell для сопоставления и удаления шаблонов файлов

Удаление всех файлов, независимо от имени, типа или расширения, не всегда является лучшим подходом. Иногда вам нужно явно исключить или включить определенные файлы в процесс удаления.

В следующем примере ниже показано, как удалить файлы, которые соответствуют имени файла *.LOG. Один из способов сделать это — напрямую использовать командлет Remove-Item с параметром -Include, как показано ниже.

Еще один способ, возможно, более осторожный — сначала использовать Get-ChildItem для сбора списка файлов, подлежащих удалению. Только когда вас устроит список файлов для удаления, вы сможете, наконец, передать коллекцию командлету Remove-Item.

Например, приведенный ниже код получает файлы *.LOG в папке c:\temp.

.

В результате приведенного выше кода Get-ChildItem возвращает список файлов, соответствующих имени файла *.LOG.

Только файлы возвращается соответствие имени файла *.log

Возвращаются только файлы, соответствующие имени файла *.log

Но что, если вы хотите исключить файл, в имени которого содержится цифра 5?Вы можете сделать это, добавив параметр -Exclude, подобный следующему коду.

Поскольку вы исключили файл с номером 5, результат теперь другой. В частности, файла File_5.log больше нет в списке, как показано ниже.

Файл File_5.log был исключен

Файл File_5.log был исключен

Когда вы уже удовлетворены набором файлов, созданных вашим кодом, вы можете передать этот набор файлов командлету Remove-Item, чтобы окончательно удалить эти файлы.

После запуска вашего окончательного кода вы достигнете своей цели, удалив только те файлы, которые вы выбрали.

Удаление выбранного файлы

Удаление выбранных файлов

Удаление файлов с помощью WMI в PowerShell

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

PowerShell поставляется с поддержкой WMI. А поддержка WMI означает, что запросы и методы WMI можно вызывать из PowerShell. Да, WMI предназначен не только для сценариев Visual Basic, которые администраторы использовали в ранние дни Windows.

Microsoft выпустила командлеты CIM для WMI в PowerShell 3.0. Для удаления файлов будут использоваться командлеты CIM Get-CimInstance и Invoke-CimMethod .

Использование PowerShell и WMI для удаления файла

В этом примере предполагается, что вы знаете путь к конкретному удаляемому файлу. Командлет Get-CimInstance с классом Cim_DataFile используется для получения информации об удаляемом файле: C:\Temp\random.txt.

В приведенном выше коде параметр -Filter принимает запрос в формате WQL. Использование WQL требует экранирования некоторых символов, включая обратную косую черту. И, поскольку escape-символ WQL также является обратной косой чертой, в результате получается двойная обратная косая черта — \\ .

Выполнение приведенного выше кода приводит к результату, показанному на демонстрации ниже. Информация о C:\Temp\random.txt сохраняется в переменной $file2delete

Теперь, когда информация о файле C:\Temp\random.txt получена, результирующий объект в переменной $file2delete можно передать командлету Invoke-CimMethod. Командлет Invoke-CimMethod имеет параметр -Name , который представляет имя метода класса Cim_DataFile.

Как вы видите на снимке экрана ниже, значение ReturnValue равно 0, что означает, что команда выполнена успешно.

Файл успешно удалено с помощью WMI и PowerShell

Файл успешно удален с помощью WMI и PowerShell

Чтобы узнать о возможных кодах ReturnValue, перейдите по этой ссылке – Метод Delete класса CIM_DataFile

Кроме того, на снимке экрана ниже показано, что после запуска метода Invoke-CimMethod Delete() CIM удалил только файл C:\Temp\random.txt. Другие файлы не были удалены.

 Файл C:\Temp\random.txt был удален

Файл C:\Temp\random.txt удален

Использование PowerShell и WMI для удаления всех файлов в папке

В следующем примере показано, как удалить все файлы в папке с помощью PowerShell и WMI. Будут использоваться те же командлеты, что и в предыдущем примере, а именно Get-CimInstance и Invoke-CimMethod. Но на этот раз запрос WQL извлечет все файлы в папке, а не только один конкретный файл.

В следующем коде командлет Get-CimInstance извлекает все файлы, расположенные в папке C:\temp. Как видно ниже, запрос фильтрует свойства Drive и Path класса Cim_DataFile.

Выполнение приведенного выше кода сохраняет полученную информацию о файлах в C:\temp в переменной $file2delete. Просмотр значений переменной $file2delete показывает вывод ниже.

Список все папки, найденные в c:\temp с помощью WMI

Список всех папок, найденных в c:\temp с помощью WMI

Теперь значения, хранящиеся в переменной $file2delete, можно передать методу Invoke-CimMethod для удаления всех файлов в c:\temp.

Помните, что код ReturnValue, равный 0, означает успешное выполнение, и для каждого файла, для которого был вызван метод удаления, будет свой собственный код ReturnValue.

Все файлы в c:\temp удалено с помощью WMI

Все файлы в c:\temp удалены с помощью WMI

Использование PowerShell и WMI для удаления файлов по расширению

В предыдущем примере вы видели, как удалить все файлы в папке независимо от расширения. Однако вы также можете контролировать, какие файлы будут удаляться в зависимости от расширения.

В приведенном ниже коде вы заметите, что на этот раз в запрос добавлено условие (имя LIKE '%.log ). Это добавленное условие означает, что возвращаются только файлы с расширением .LOG. Знак процента ( % ) — это оператор WQL LIKE, который означает "Строка из нуля или более символов". В терминах программирования % эквивалентен подстановочному знаку, который является символом звездочки ( * ).

В приведенной ниже демонстрации показано, что перед выполнением приведенного выше кода имеется девять файлов *.LOG и только один файл *.TXT. После выполнения кода файлы *.LOG удаляются, и в папке остается только файл *.TXT.

Сравнение WMI и Remove-Item

На данный момент в этом руководстве вы получили общее представление о том, как использовать PowerShell для удаления файлов. Вы узнали об Remove-Item, а также о WMI. Оба выполняют схожие функции, но сильно различаются.

Какой метод следует использовать для удаления файлов; Remove-Item или WMI?

Использование встроенных в PowerShell командлетов, таких как Get-ChildItem и Remove-Item, для извлечения и удаления файлов выполняется намного быстрее, чем при использовании WMI.

В приведенном ниже примере показано сравнение использования WMI и встроенного командлета PowerShell для получения списка файлов в каталоге C:\windows\web и его подкаталогах.

Когда вы запустите приведенный выше код в PowerShell, вы увидите вывод, аналогичный приведенному ниже.

Get- Сравнение ChildItem и Get-CimInstance с запросом WMI

Get-ChildItem и Get-CimInstance с запросом WMI

Как видно из результатов, показанных выше, перечисление файлов в C:\windows\web заняло почти в десять раз больше времени с помощью Get-CimInstance, чем время потребовалось для завершения Get-ChildItem!

Кроме того, вы заметили, что строка Get-ChildItem намного короче строки Get-CimInstance ? Get-ChildItem позволяет не только ускорить выполнение, но и получить более чистый и короткий код.

Дальнейшие шаги

В этой статье вы увидели два разных способа использования PowerShell для удаления файлов с помощью встроенных командлетов и WMI/CIM.

Помните, что для удаления файлов всегда следует использовать командлеты Get-ChildItem и Remove-Item. Эти встроенные командлеты более гибкие, простые и быстрые в использовании, чем при использовании WMI.

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

Дополнительная литература

Ненавидите рекламу? Хотите поддержать писателя? Получите многие из наших руководств в виде руководства по ATA.

Ещё от ATA Learning & Partners

Резервное копирование Office 365 для чайников

Лучшее руководство по защите данных Microsoft Office 365. Изучите готовые функции безопасности.

Руководства ATA

ATA известна своими высококачественными письменными учебными пособиями в виде сообщений в блогах. Поддержите ATA с помощью электронных книг ATA Guidebook PDF, доступных в автономном режиме и без рекламы!

Автор аватара - Адам Бертрам


Удаление файла с помощью командлета Remove-Item.

Каким бы простым ни было удаление файла или папки, важно понимать, как выполнить эту операцию в PowerShell. Многие бизнес-процессы основаны на сочетании файловых операций и неизбежно требуют удаления файлов процесса, временных файлов или очистки конфиденциальных данных. В этой статье мы рассмотрим, как удалять файлы и папки в PowerShell 7 и какие существуют ограничения.

Простое удаление файлов и папок

Следуя типичному соглашению существительного и глагола PowerShell, чтобы удалить файл или папку, вы будете использовать командлет Remove-Item. Чтобы удалить файл, просто передайте имя удаляемого файла через параметр -Path или в качестве первого аргумента. При успешной операции вы не получите выходного сообщения.Поэтому в этом примере мы передаем параметр -Verbose, чтобы показать, что файл, который мы собираемся удалить, был удален.


Удаление файла с помощью командлета Remove-Item.

Для удаления каталога используется та же команда, но с параметром -Recurse. Параметр -Recurse необходим, если каталог не пуст, иначе Remove-Item будет запрашивать подтверждение для каждого элемента, содержащегося в каталоге.


Удаление непустого каталога.

Как насчет использования PowerShell в Linux? Применяются те же команды, что и в приведенном ниже примере, где мы удаляем и непустую папку, и файл.

Remove-Item может работать с длинными именами файлов как в Linux, так и в Windows. Традиционно инструменты Windows ограничивались 255 символами, но в PowerShell 7 это ограничение обычно отсутствует. Если у вас возникли проблемы с удалением файла по длинному пути, вы можете использовать специальный Windows API для имен путей Unicode до 32 тыс. символов. Этот формат состоит из \\?\ перед типичным путем, как в этом примере, \\?\\C:\\Articles\\File3.txt .

Особые случаи удаления файлов и папок

Существует ряд особых случаев, с которыми вы можете столкнуться при попытке удалить файлы и папки. В зависимости от атрибутов, которые может иметь данный файл или папка, вы не сможете перечислить файл или папку, и вам нужно указать Remove-Item, чтобы обрабатывать входные данные по-другому.

Удаление скрытого файла

Файлы, помеченные как скрытые, могут не отображаться в выходных данных Get-ChildItem. Использование флага -Hidden позволяет вам найти эти файлы. При попытке удалить эти файлы вам потребуется принудительное удаление.


Удаление скрытого файла.

С файлом, помеченным как доступный только для чтения, что обозначено буквой r в отображении режима, как показано в ответе Get-ChildItem , нам нужно указать Remove-Item для принудительного удаления. В противном случае вы увидите сообщение об ошибке, как показано ниже.


Удаление скрытого файла.

Разблокировка файла с помощью команды Remove-Item

Когда файл загружается из Интернета, Windows добавляет идентификатор зоны в альтернативный поток данных. Этот поток данных будет указывать на то, что запуск файла должен быть заблокирован до тех пор, пока не будет предпринято ручное действие для разблокировки файла.


Показывает, что файл заблокирован после загрузки из Интернета.

Как мы видим ниже, в этом файле есть альтернативный поток Zone.Identifier, из-за которого файл отображается как заблокированный.


Отображение всех потоков, связанных с файлом.

Интересно, что вы можете использовать Remove-Item, чтобы удалить этот альтернативный поток данных, что имеет тот же эффект, что и установка флажка «Разблокировать». Для этого просто используйте следующий код.


Отображение всех потоков, связанных с файлом.

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

Это концепция только для Windows, поэтому этот тип команд не будет работать в PowerShell 7 в Linux.

Заключение

Команда Remove-Item очень полезна как в Windows, так и в Linux. Эта команда, способная удалять файлы, папки и альтернативные потоки данных, очень полезна для управления файлами и папками в сценариях и в командной строке. Благодаря возможности легко обрабатывать файлы и папки, доступные только для чтения, а также файлы и папки, содержащиеся в длинных путях, Remove-Item является гибким и простым в использовании!

А если вы хотите переместить файлы с помощью PowerShell, ознакомьтесь со статьей Как переместить файл или папку из командной строки с помощью Windows PowerShell? на Петри.

Еще от Адама Бертрама


Знакомство с кодировкой символов в PowerShell


Начало работы с PSCustomObject в PowerShell


Как использовать PowerShell для изменения и обновления реестра

Будь то безопасность или облачные вычисления, у нас есть ноу-хау для вас. Подпишитесь на наши информационные бюллетени здесь.

PowerShell

Get-AdUser: как проводить аудит пользователей Active Directory с помощью PowerShell

3 марта 2022 г. | Майкл Рейндерс

10 лучших команд PowerShell, которые Вы должны знать

10 лучших команд PowerShell, которые вы должны знать

17 февраля 2022 г. | Майкл Рейндерс

Практический Microsoft Graph PowerShell для Microsoft Команды

Практическое руководство по Microsoft Graph PowerShell для Microsoft Teams

8 февраля 2022 г. | Лиам Клири

Windows PowerShell

Как переместить файл или папку из командной строки с помощью Windows PowerShell?

Читайте также: