Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - [решено] Удалить папку без подтверждения

Ответить
Настройки темы
PowerShell - [решено] Удалить папку без подтверждения

Пользователь


Сообщения: 148
Благодарности: 39

Профиль | Сайт | Отправить PM | Цитировать


Напишите, пожалуйста аналог
Код: Выделить весь код
cmd /c rd /s /q
Указал все возможные ключи:

Код: Выделить весь код
PS C:\Windows\system32> Remove-Item -Path "$env:Temp\Folder" -Force -Confirm -Recurse -ErrorAction SilentlyContinue
А он все равно требует подтверждение:

Цитата:
Подтверждение
Вы действительно хотите выполнить это действие?
Выполнение операции "Удаление каталога" над целевым объектом "C:\Users\Alex\AppData\Local\Temp\Folder".
[Y] Да - Y [A] Да для всех - A [N] Нет - N [L] Нет для всех - L [S] Приостановить - S [?] Справка (значением по умолчанию является "Y"):
Мозг отказывается понимать логику Майкрософт.

-------
Alex Dragokas


Отправлено: 22:31, 21-09-2020

 

Аватара для Fors1k

Старожил


Сообщения: 193
Благодарности: 112

Профиль | Отправить PM | Цитировать


Цитата Dragokas:
Мозг отказывается понимать логику Майкрософт. »
Confirm - это и есть вызов запроса на подтверждение. Здесь вам нужен только Recurse.

Последний раз редактировалось Fors1k, 21-09-2020 в 23:43.


Отправлено: 23:19, 21-09-2020 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

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


Забанен


Сообщения: 793
Благодарности: 260

Профиль | Цитировать


Порой pwsh сходит с ума из-за различных атрибутов, например, ReadOnly. Поэтому перед тем, как грохнуть папку, лучше заведомо сбросить атрибуты файлов папки до Normal. Например:
Код: Выделить весь код
(Get-ChildItem foo -Recurse).ForEach{$_.Attribute = 'Normal'} && Remove-Item foo -Recurse -Force
Хотя бывают и другие причины подобного поведения. Если пример выше работает, значит дело было именно в атрибутах.
Это сообщение посчитали полезным следующие участники:

Отправлено: 17:31, 22-09-2020 | #3


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Цитата greg zakharov:
Порой pwsh сходит с ума из-за различных атрибутов, например, ReadOnly. »
Вроде ж -Force как раз для этого, не? Или это уже просто ошибки в самой реализации pwsh?

Отправлено: 17:47, 22-09-2020 | #4


Забанен


Сообщения: 793
Благодарности: 260

Профиль | Цитировать


Цитата Iska:
Вроде ж -Force как раз для этого, не? Или это уже просто ошибки в самой реализации pwsh?
Да, -Force для этого случая, - ошибок реализации в pwsh достаточно.

Отправлено: 18:43, 22-09-2020 | #5


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


greg zakharov, спасибо, ясно.

Отправлено: 20:30, 22-09-2020 | #6


Аватара для DJ Mogarych

fascinating rhythm


Moderator


Сообщения: 6491
Благодарности: 1465

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
-confirm:$false

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)

Это сообщение посчитали полезным следующие участники:

Отправлено: 21:29, 22-09-2020 | #7


Пользователь


Сообщения: 148
Благодарности: 39

Профиль | Сайт | Отправить PM | Цитировать


Fors1k, так то оно так, только как видите, не работает.

greg zakharov, если я правильно понял, для игнорирования атрибутов предназначен ключик -Force

Спасибо, метод от DJ Mogarych сработал.

Только вот, как я должен был это понять по докам?

Код: Выделить весь код
get-help Remove-Item -full
Цитата:
-Confirm <System.Management.Automation.SwitchParameter>
Prompts you for confirmation before running the cmdlet. For more information, see the following articles:

- about_Preference_Variables (../microsoft.powershell.core/about/about_preference_variables.md#confirmpreference)- about_Functions_CmdletBindingAttribute (../microsoft.powershell.core/about/about_functions_cmdletbindingattribute.md?#confirmimpact)

Требуется? false
Позиция? named
Значение по умолчанию False
Принимать входные данные конвейера?False
Принимать подстановочные знаки?false
Если я правильно понимаю
Цитата:
"Значение по умолчанию False"
означает, что там неявно уже подставляется False. Ошибка в доках?

И подскажите мне, пожалуйста, чем заменить магические точки ../microsoft.powershell.core чтобы попасть на сайт, указанный в доках?
(боже, как же любит Майкрософт усложнять)


Цитата greg zakharov:
ошибок реализации в pwsh достаточно. »
И не только. Особенно умиляет, что не работает мана, пока не введешь Update-Help. 21-й век ёпт.
Неужели не хватило места в их гигабайтовых обновлениях винды.

-------
Alex Dragokas


Последний раз редактировалось Dragokas, 23-09-2020 в 01:03.


Отправлено: 00:57, 23-09-2020 | #8


Аватара для Fors1k

Старожил


Сообщения: 193
Благодарности: 112

Профиль | Отправить PM | Цитировать


Цитата Dragokas:
Fors1k, так то оно так, только как видите, не работает. »
Не работает что именно?
"-Confirm" = запросить подтверждение перед выполнением. Вы написали -Confirm, он вас спросил, все как и должно быть.

Цитата Dragokas:
И подскажите мне, пожалуйста, чем заменить магические точки »
https://docs.microsoft.com/ru-ru/powershell/module
Вот нужный вам код:
Код: Выделить весь код
Remove-Item "$env:Temp\Folder" -Recurse -Force
Это сообщение посчитали полезным следующие участники:

Отправлено: 02:08, 23-09-2020 | #9


Аватара для YuS_2

Crazy


Contributor


Сообщения: 1171
Благодарности: 487

Профиль | Отправить PM | Цитировать


Цитата Dragokas:
Только вот, как я должен был это понять по докам? »
Ну, с доками у микрософта часто возникают проблемы... стоит вспомнить документацию по CMD, например. Сколько нюансов, которые не имеют описания вовсе и обнаруживаются только эмпирическим путем. Вам-то это должно быть известно очень хорошо.
Что касается параметра -confirm:
У powershell, есть много нюансов, которые не описываются в help-ах конкретных командлетов, но они являются общими для поведения многих из них. И это, как раз, тот случай.
Поведение выдачи запроса на подтверждение определяется ещё и значением автопеременной $ConfirmPreference, помимо, собственно, значения по умолчанию параметра -confirm
Цитата:
The $ConfirmPreference variable's valid values are High, Medium, or Low. Cmdlets and functions are assigned a risk of High, Medium, or Low. When the value of the $ConfirmPreference variable is less than or equal to the risk assigned to a cmdlet or function, PowerShell automatically prompts you for confirmation before running the cmdlet or function.
Цитата Dragokas:
означает, что там неявно уже подставляется False. Ошибка в доках? »
Сам параметр -confirm, работает как и любой другой параметр со свойством switch, т.е. если он не указан, то значение будет по умолчанию, а если его указать, но без конкретного содержания через двоеточие (т.е. не так -confirm:$false), то значением будет $true:
Код: Выделить весь код
function test{
    param(
        [switch]$switch = $false
    )
    if($switch){'True'}else{'False'}
}
Цитата:
PS_5.1> test
False
PS_5.1> test -switch
True
PS_5.1> test -switch:$false
False
PS_5.1>
- кроме того, во многих местах у powershell, зачастую присутствуют приоритеты, которые иногда могут вызвать удивление, но тем не менее их необходимо учитывать...

Цитата Dragokas:
Особенно умиляет, что не работает мана, пока не введешь Update-Help. 21-й век ёпт.
Неужели не хватило места в их гигабайтовых обновлениях винды. »
Дело не в размерах обновлений, наверное...
Предустановленный powershell v5.1, содержит маны и сам он уже практически не изменяется, а версии поновее, подвержены изменениям и часто значительным, поэтому и маны необходимо периодически обновлять отдельно, видимо исходили из этого... но согласен, что с документацией у микрософта были, есть и скорее всего, будут проблемы...

-------
scio me nihil scire. Ѫ


Последний раз редактировалось YuS_2, 23-09-2020 в 11:05. Причина: дополнение примером...

Это сообщение посчитали полезным следующие участники:

Отправлено: 08:32, 23-09-2020 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - [решено] Удалить папку без подтверждения

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] подскажите, как установить файл, без подтверждения isugil Скриптовые языки администрирования Windows 9 10-04-2020 19:18
Установка - [решено] Как установить Гаджеты без подтверждения? Slem X Microsoft Windows 7 3 26-08-2018 23:26
Разное - Диспетчер задач. Завершение процесса без подтверждения. напильник Microsoft Windows 7 0 29-06-2016 07:09
CMD/BAT - Изменение реестра через .bat без подтверждения 33gvozdya@vk Программирование и базы данных 2 19-09-2013 08:45
HP 4015 не печатает без подтверждения surgutfred Непонятные проблемы с Железом 0 19-12-2011 09:27




 
Переход