Удаление NTFS-потока для папки без подтверждения
На папке создан NTFS-поток:
Код:
mkdir C:\helloworld
echo Hidden Text > C:\helloworld:MyStream
echo c:\helloworld\hello.txt > hello
Хочу его удалить (из powershell):
Код:
Remove-Item -Path "C:\helloworld" -Stream *
Запрашивается подтверждение, где надо нажать Y или Enter, а мне нужно удалять без этого подтверждения.
Рекурсивно или нет - не важно (можно и не рекурсивно). Лишь бы удалилось.
Пробую рекурсивно, как советует консоль (пример нашел на стек оверфлоу):
Код:
Remove-Item -Path "C:\helloworld" -Stream * -Recurse -Force -Confirm:$false
Но выдает ошибку:

|
А это:
Цитата:
Цитата test009
echo c:\helloworld\hello.txt > hello »
|
зачем?
Цитата:
Цитата test009
Запрашивается подтверждение, где надо нажать Y или Enter, »
|
У меня:
Код:
Remove-Item -Path "C:\helloworld" -Stream *
удаляет без запроса (PS 5.1, Windows 7 SP1 x64).
1) до и 2) после отработки кода:
|
Удаляет без запроса если папка пустая.
Это нужно чтобы сделать папку не пустой и оттестить именно этот кейс.
Извиняюсь, напутал.
Так правильно:
Цитата:
echo hello > c:\helloworld\hello.txt
|
|
Цитата:
Цитата test009
Это нужно чтобы сделать папку не пустой и оттестить именно этот кейс. »
|
Это не делает папку не пустой. Текст «c:\helloworld\hello.txt » помещается в файл «hello» в текущем каталоге.
Понятно.
Сдаётся мне, что это ошибка в реализации самого командлета. И не только этого. Скажем:
Код:
Get-Item -Path 'C:\helloworld' -Stream '*'
ничего не возвращает (в отличие от указания файла).
|
а можно как-то перенаправить пользовательский ввод?
чтобы я как будто типа ввел букву Y
|
Цитата:
Цитата test009
Хочу его удалить (из powershell):
Код:
Remove-Item -Path "C:\helloworld" -Stream *
Запрашивается подтверждение, где надо нажать Y или Enter, а мне нужно удалять без этого подтверждения. »
|
У Remove-Item нет параметра Stream, если указана папка. Попробуйте ввести
Код:
Remove-Item -Path "C:\helloworld" -
и нажатьCtrl+Space
Remove-Item и Get-Item не работают с папками
Цитата:
-Stream
Note
This Parameter is only available on Windows.
Gets the specified alternate NTFS file stream from the file. Enter the stream name. Wildcards are supported. To get all streams, use an asterisk (*). This parameter isn't valid on folders.
|
Как вариант - парсить вывод streams https://docs.microsoft.com/sysintern...nloads/streams
|
Цитата:
Цитата Vadikan
У Remove-Item нет параметра Stream, если указана папка. »
|
Смотрите выше сообщения #1 и #2. Параметр -Streams работает для каталога. Проблема состоит в том, что для удаления потока из непустого каталога задаётся запрос. Для отключения запроса используется легальный (а как по мне — совершенно бредовый), описанный в документации способ с -Recourse и -Confirm:$false. И вот здесь уже «сходит с ума» парсер командлета, теряя атрибут параметра -Streams.
Цитата:
Цитата Vadikan
Цитата:
This parameter isn't valid on folders.
|
»
|
О! В новой версии добавили в справку.
|
Время: 23:43.
© OSzone.net 2001-