Ps 2021 temp что это
Перейти к содержимому

Ps 2021 temp что это

  • автор:

Папка Temp — для чего почему и как

В Windows очень много всяких папок или процессов, которые занимают много места, как физического, так и оперативного. Многие пользователи настолько боятся компьютера и ОС, что не хотят даже лезть в системный диск, однако иногда это нужно делать. В частности сегодня я Вам напишу про папку Temp.

Для чего нужна папка temp?
В операционной системе Windows постоянно происходят много всяких процессов, принадлежащих как самой ОС, так и установленным программам. В процессе этой работы, для сохранения промежуточного или незаконченного результата своей деятельности, все запущенные приложения создают временные файлы данных и активно пользуются ими. Вот как раз папка Temp в Windows и является хранилищем временных файлов.

Где находится папка temp?
Так то у неё около 5ти путей, но обычно она находится и больше всего занимает места по пути

:\Users\\AppData\Local\Temp

Можно ли удалить папку temp
Можно и нужно. Этим Вы ничего такого не сделаете системе. Но лучше это делать уже перед выключением компьютера и завершении сеанса. Но можете и прямо сейчас ввести в адресную строку проводника %USERPROFILE%\AppData\Local\Temp и, выделив всё, удалить.
Будьте готовы что не все файлы и папки будут удалены. Может выйти ошибка о том, что они заняты.

Как очистить папку temp
Можно воспользоваться не прямым способом, описанным выше, а более правильным — через Очистку диска.
Жмем ПКМ по диску с ОС и выбираем Свойства. В этом окне жмём кнопку Очистка диска

Папка Temp - для чего почему и как

Ждём пока соберется информация

Папка Temp - для чего почему и как

Теперь выбираем временные файлы и очищаем

Папка Temp - для чего почему и как

Кстати, можете и другие удалить.

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

1) Жмем ПКМ по Моему компьютеру и выбираем Свойства.
2) В левом краю выбираем Дополнительные параметры системы.
3) В этом окошке выбираем Переменные среды

Папка Temp - для чего почему и как

4) Меняем значения TEMP и TMP

Папка Temp - для чего почему и как

на C:/Windows/Temp

Папка Temp - для чего почему и как

Папка Temp - для чего почему и как

5) Создаем в блокноте файл с любым именем и с содержанием:
pushd %TEMP% && rd /s /q . > nul 2>&1
pushd %WinDir%\TEMP && rd /s /q . > nul 2>&1

и сохраняем с расширением cmd .
Например alex.cmd
или качаем отсюда ochistka_papki_temp.rar 284 b cкачиваний: 1742
6) Открываем Редактор групповых политик (Win + R -> вводим gpedit.msc ) и переходим по пути Конфигурация компьютера -> Конфигурация Windows -> Сценарии (запуск/завершение).
7) Выделяем Завершенеи работы и жмем ссылку Свойства

Папка Temp - для чего почему и как

8) Жмём на кнопку Добавить и указываем путь к сохраненному файлу с шага 5

Папка Temp - для чего почему и как

9) Не буду досконально описывать как искать и добавлять файл (кнопка Обзор.. и прочее), но в итоге должно быть так:

Папка Temp - для чего почему и как

10) Теперь то же самое делаем в разделе Конфигурация пользователя.

Папка Temp - для чего почему и как

Статья окончена. Теперь Вы знаете всё про папку Temp.
Похожие публикации
Папка windows winsxs 10 лет и 4 месяца назад, Статьи про windows 7, Статьи про windows 8
Простая и доступная оптимизация windows XP 10 лет и 12 месяцев назад, Советы Windows XP
Безопасность и реестр в Windows ХР 11 лет назад, Безопасность в Windows XP

  • Комментарии
  • ВКонтакте
  • Facebook

6 комментариев
Новые публикации
Лента комментариев

  • НЕДОКУМЕНТИРОВАННЫЕ ВОЗМОЖНОСТИ WINDOWS 7 Александр 2 месяца и 4 недели назад

1 Автор: Александр Тема: НЕДОКУМЕНТИРОВАННЫЕ ВОЗМОЖНОСТИ WINDOWS 7 Символьные папки. Это не полный список, есть и другие.

70 Автор: Миха Тема: Перемещаем папки установки программ и профилей по умолчанию Сделал первый этап на винде 8. Перестали работать иконки. Логично, все пути теперь ведут на D. Делал это ради одной объемной проги, которая не давала выбора на какой диск ставить и ставилась на C. Откатил назад, мне лень все копировать на D и прописывать пути, проще установить другую прогу. Что и сделал. Хорошо, что все откатилось, вернул пути на C в реестре. Боли не было. Но и способ так себе, хорош при установке с нуля, а не на рабочем компе. Много чего переносить и не авернчка потеряется чт .

1 Автор: Алёна Тема: АДМИНИСТРИРОВАНИЕ WINDOWS 7 Здравствуйте.
У меня на ровном месте учётка в Виндовс 7 разделилась на 2 – мою и администратора. В моей зарублены все права. Нет доступа к Диспетчеру задач, выключению компьютера и т.п.
По вашей инструкции сделать ничего не могу, т.к. GPEDIT.MSC нет ни в одной из учёток. Подскажите, где ещё можно найти эти настройки?

13 Автор: Ник Тема: Пропало меню отправить Оч странно, но вчера я протр@хался весь день и ничего не вышло. И папки в АppData удалял/возвращал и эту ? операцию проделывал и КУЧУ других. Но вот сегодня ещё раз попытался. Вчера меню отправить вообще пропало из контекстного меню, а сегодня я решил, что могу попробовать его восстановить и получилось! Спасибо Вам за Ваш чудесный мозг и знания!

20 Автор: Имя Тема: Где скачать вирусы Ищу сайт где скачать вирус, нахожу данны сайт, хочу скачать вирусы но их тут нет

Все, что вы хотели знать о ShouldProcess

Некоторые возможности функций PowerShell значительно улучшают способ взаимодействия с ними пользователей. Одна из таких важных возможностей, которую часто упускают из виду, — это поддержка параметров -WhatIf и -Confirm , которые можно легко добавить в функции. В этой статье мы подробно рассмотрим, как реализовать эту возможность.

Оригинал этой статьи впервые был опубликован в блоге автора @KevinMarquette. Группа разработчиков PowerShell благодарит Кевина за то, что он поделился с нами этими материалами. Читайте его блог — PowerShellExplained.com.

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

Общие параметры

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

Использование параметра -WhatIf

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

PS C:\temp> Get-ChildItem Directory: C:\temp Mode LastWriteTime Length Name ---- ------------- ------ ---- -a---- 4/19/2021 8:59 AM 0 importantfile.txt -a---- 4/19/2021 8:58 AM 0 myfile1.txt -a---- 4/19/2021 8:59 AM 0 myfile2.txt PS C:\temp> Remove-Item -Path .\myfile1.txt -WhatIf What if: Performing the operation "Remove File" on target "C:\Temp\myfile1.txt". 

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

PS C:\temp> Remove-Item -Path * -WhatIf What if: Performing the operation "Remove File" on target "C:\Temp\myfile1.txt". What if: Performing the operation "Remove File" on target "C:\Temp\myfile2.txt". What if: Performing the operation "Remove File" on target "C:\Temp\importantfile.txt". 

Использование параметра -Confirm

Команды, поддерживающие -WhatIf , также поддерживают -Confirm . Это дает возможность подтвердить действие перед его выполнением.

PS C:\temp> Remove-Item .\myfile1.txt -Confirm Confirm Are you sure you want to perform this action? Performing the operation "Remove File" on target "C:\Temp\myfile1.txt". [Y] Yes [A] Yes to All [N] No [L] No to All [S] Suspend [?] Help (default is "Y"): 

В этом случае у вас есть несколько вариантов: продолжить выполнение, пропустить изменение или остановить выполнение скрипта. Эти параметры описаны в справке, которая вызывается при запросе из командной строки.

Y - Continue with only the next step of the operation. A - Continue with all the steps of the operation. N - Skip this operation and proceed with the next operation. L - Skip this operation and all subsequent operations. S - Pause the current pipeline and return to the command prompt. Type "exit" to resume the pipeline. [Y] Yes [A] Yes to All [N] No [L] No to All [S] Suspend [?] Help (default is "Y"): 

Локализация

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

Параметры-переключатели

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

Первый подход — это использовать определенный синтаксис параметров, который применим для любых параметров, но в основном используется для параметров-переключателей. Чтобы присоединить значение к параметру, необходимо поставить двоеточие.

Remove-Item -Path:* -WhatIf:$true 

То же самое можно сделать и с переменной.

$DoWhatIf = $true Remove-Item -Path * -WhatIf:$DoWhatIf 

Второй подход заключается в использовании хэш-таблицы для сплаттинга значения.

$RemoveSplat = @ < Path = '*' WhatIf = $true >Remove-Item @RemoveSplat 

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

SupportsShouldProcess

Чтобы включить поддержку -WhatIf и -Confirm , для начала необходимо указать SupportsShouldProcess в CmdletBinding функции.

function Test-ShouldProcess

Указав SupportsShouldProcess таким образом, можно вызвать функцию с параметром -WhatIf (или -Confirm ).

PS> Test-ShouldProcess -WhatIf What if: Performing the operation "Remove File" on target "C:\Temp\myfile1.txt". 

Обратите внимание, что я не создаю параметр с именем -WhatIf . Он создается автоматически, если задать свойство SupportsShouldProcess . Если задать параметр -WhatIf для Test-ShouldProcess , некоторые из вызываемых объектов также выполняют обработку -WhatIf .

Доверяйте, но проверяйте

Полагаться на то, что все вызовы наследуют значение -WhatIf , довольно опасно. В остальных примерах я предполагаю, что это не так, и при вызове других команд буду задавать все параметры явно. Рекомендую и вам придерживаться того же подхода.

function Test-ShouldProcess

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

$PSCmdlet.ShouldProcess

Метод, который позволяет реализовать свойство SupportsShouldProcess , называется $PSCmdlet.ShouldProcess . Вы вызываете $PSCmdlet.ShouldProcess(. ) , чтобы узнать, нужно ли обработать ту или иную логику, а остальное PowerShell выполняет автоматически. Давайте начнем с примера.

function Test-ShouldProcess < [CmdletBinding(SupportsShouldProcess)] param() $file = Get-ChildItem './myfile1.txt' if($PSCmdlet.ShouldProcess($file.Name))< $file.Delete() >> 

Вызов $PSCmdlet.ShouldProcess($file.name) проверяет наличие параметра -WhatIf (и -Confirm ) и обрабатывает его соответствующим образом. -WhatIf приводит к тому, что ShouldProcess выводит описание изменения и возвращает $false .

PS> Test-ShouldProcess -WhatIf What if: Performing the operation "Test-ShouldProcess" on target "myfile1.txt". 

Вызов с -Confirm приводит к приостановке выполнения скрипта и отображению для пользователя вариантов продолжения. Он возвращает $true , если пользователь выбрал Y .

PS> Test-ShouldProcess -Confirm Confirm Are you sure you want to perform this action? Performing the operation "Test-ShouldProcess" on target "myfile1.txt". [Y] Yes [A] Yes to All [N] No [L] No to All [S] Suspend [?] Help (default is "Y"): 

Замечательной особенностью метода $PSCmdlet.ShouldProcess является то, что он дублируется в подробных выходных данных. Я часто использую это при реализации ShouldProcess .

PS> Test-ShouldProcess -Verbose VERBOSE: Performing the operation "Test-ShouldProcess" on target "myfile1.txt". 

Перегрузки

Для $PSCmdlet.ShouldProcess предусмотрено несколько различных перегрузок с разными параметрами для настройки вывода сообщений. Первая из них уже использовалась в приведенном выше примере. Давайте подробнее рассмотрим каждую из них.

function Test-ShouldProcess < [CmdletBinding(SupportsShouldProcess)] param() if($PSCmdlet.ShouldProcess('TARGET'))< # . >> 

Эта выводит результат, включающий имя функции и целевой объект (значение параметра).

What if: Performing the operation "Test-ShouldProcess" on target "TARGET". 

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

## $PSCmdlet.ShouldProcess('TARGET','OPERATION') What if: Performing the operation "OPERATION" on target "TARGET". 

Следующий вариант — указать три параметра для полной настройки сообщения. Если используются три параметра, первый из них является сообщением в целом. Два других параметра по-прежнему используются в выходных данных сообщения -Confirm .

## $PSCmdlet.ShouldProcess('MESSAGE','TARGET','OPERATION') What if: MESSAGE 

Ссылка на параметр

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

## $PSCmdlet.ShouldProcess('TARGET') What if: Performing the operation "FUNCTION_NAME" on target "TARGET". ## $PSCmdlet.ShouldProcess('TARGET','OPERATION') What if: Performing the operation "OPERATION" on target "TARGET". ## $PSCmdlet.ShouldProcess('MESSAGE','TARGET','OPERATION') What if: MESSAGE 

Я обычно использую метод с двумя параметрами.

ShouldProcessReason

Существует также четвертая перегрузка. Она сложнее, чем друге, и позволяет получить причину выполнения ShouldProcess . Я добавляю ее здесь для полноты картины, так как вместо этого можно просто проверить, действительно ли значение $WhatIfPreference равно $true .

$reason = '' if($PSCmdlet.ShouldProcess('MESSAGE','TARGET','OPERATION',[ref]$reason)) < Write-Output "Some Action" >$reason 

Переменную $reason необходимо передать в четвертый параметр в виде ссылочной переменной с [ref] . ShouldProcess заполняет $reason значением None или WhatIf . Я бы не назвал это полезной возможностью, так что у меня нет причин ее использовать.

Место размещения

Метод ShouldProcess используется, чтобы сделать скрипты безопаснее. Поэтому его можно использовать при внесении изменений в скрипты. Я предпочитаю размещать вызов $PSCmdlet.ShouldProcess как можно ближе к изменению.

## general logic and variable work if ($PSCmdlet.ShouldProcess('TARGET','OPERATION'))

Если я обрабатываю коллекцию элементов, я вызываю этот метод для каждого элемента. Поэтому вызов помещается внутри цикла foreach.

foreach ($node in $collection) < # general logic and variable work if ($PSCmdlet.ShouldProcess($node,'OPERATION'))< # Change goes here >> 

Причина, по которой я располагаю ShouldProcess в непосредственной близости от этого изменения, заключается в том, что мне нужно обеспечить выполнение как можно большей части кода при заданном параметре -WhatIf . Я хочу, чтобы по возможности выполнялась установка и проверка. Тогда пользователь увидит эти ошибки.

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

$WhatIfPreference

Первая привилегированная переменная — $WhatIfPreference . По умолчанию ее значение $false . Если задать для нее значение $true , функция выполняется так, как если бы вы указали -WhatIf . Если задать это в сеансе, все команды будут выполняться с параметром -WhatIf .

При вызове функции с параметром -WhatIf значение $WhatIfPreference становится равным $true в области действия функции.

ConfirmImpact

Большинство моих примеров касаются -WhatIf , но все это также работает и при использовании -Confirm для отправки запроса пользователю. Для аргумента ConfirmImpact функции можно задать значение high, и тогда она будет выводить запрос пользователю, как если бы была вызвана с параметром -Confirm .

function Test-ShouldProcess < [CmdletBinding( SupportsShouldProcess, ConfirmImpact = 'High' )] param() if ($PSCmdlet.ShouldProcess('TARGET'))< Write-Output "Some Action" >> 

Этот вызов Test-ShouldProcess выполняет действие -Confirm из-за значения High .

PS> Test-ShouldProcess Confirm Are you sure you want to perform this action? Performing the operation "Test-ShouldProcess" on target "TARGET". [Y] Yes [A] Yes to All [N] No [L] No to All [S] Suspend [?] Help (default is "Y"): y Some Action 

Очевидная проблема заключается в том, что теперь ее сложнее использовать в других скриптах без запроса пользователя. В этом случае можно передать $false в -Confirm , чтобы подавить запрос.

PS> Test-ShouldProcess -Confirm:$false Some Action 

Я расскажу, как добавить поддержку -Force в одном из следующих разделов.

$ConfirmPreference

$ConfirmPreference — это автоматическая переменная, определяющая, когда ConfirmImpact запрашивает подтверждение выполнения. Ниже приведены возможные значения для $ConfirmPreference и ConfirmImpact .

С помощью этих значений можно указать различные уровни влияния для каждой функции. Если заданное для $ConfirmPreference значение выше, чем значение ConfirmImpact , запрос на подтверждение выполнения не выводится.

По умолчанию для $ConfirmPreference задано значение High , а для ConfirmImpact — значение Medium . Если вы хотите, чтобы функция автоматически запрашивала подтверждение пользователя, задайте для аргумента ConfirmImpact значение High . В противном случае задайте для него значение Medium , если команда выполняет необратимое действие, и Low , если она всегда безопасна для выполнения в рабочей среде. Если задать для него значение none , запрос на подтверждение не выводится, даже если задан параметр -Confirm (но поддержка -WhatIf по-прежнему предоставляется).

В случае вызова функции с параметром -Confirm значение $ConfirmPreference становится равным Low в области действия функции.

Подавление вложенных запросов на подтверждение

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

Я обычно предпочитаю использовать -Confirm:$false для вызываемых команд после того, как запрос уже обработан.

function Test-ShouldProcess < [CmdletBinding(SupportsShouldProcess)] param() $file = Get-ChildItem './myfile1.txt' if($PSCmdlet.ShouldProcess($file.Name))< Remove-Item -Path $file.FullName -Confirm:$false >> 

Таким образом, мы снова возвращаемся к предыдущему предупреждению. Есть ряд особенностей, от которых зависит, в каких ситуациях -WhatIf не передается в функцию и в каких ситуациях -Confirm передается в функцию. Обещаю вернуться к этому вопросу позже.

$PSCmdlet.ShouldContinue

Если вам требуется более жесткий контроль, чем обеспечивает ShouldProcess , можно запустить запрос непосредственно с помощью ShouldContinue . ShouldContinue пропускает $ConfirmPreference , ConfirmImpact , -Confirm , $WhatIfPreference и -WhatIf , так как запрос выводится при каждом выполнении.

ShouldProcess и ShouldContinue можно легко перепутать. Я обычно помню, что нужно использовать ShouldProcess , поскольку параметр в CmdletBinding называется SupportsShouldProcess . Практически во всех сценариях следует использовать ShouldProcess . Именно поэтому я сначала рассматривал именно этот метод.

Давайте посмотрим на метод ShouldContinue в действии.

function Test-ShouldContinue < [CmdletBinding()] param() if($PSCmdlet.ShouldContinue('TARGET','OPERATION'))< Write-Output "Some Action" >> 

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

Test-ShouldContinue Second TARGET [Y] Yes [N] No [S] Suspend [?] Help (default is "Y"): 

Основная проблема использования ShouldContinue заключается в том, что пользователь в таком случае должен работать в интерактивном режиме, потому что для него всегда отображется запрос. Вам всегда следует создавать такие средства, которые могут использоваться другими скриптами. Для этого используется реализация -Force . Я вернусь к этой идее позже.

Да для всех

Для ShouldProcess этот вариант обрабатывается автоматически, но для ShouldContinue необходимо выполнить еще несколько действий. Существует вторая перегрузка метода, в которую необходимо передать несколько значений по ссылке для управления логикой.

function Test-ShouldContinue < [CmdletBinding()] param() $collection = 1..5 $yesToAll = $false $noToAll = $false foreach($target in $collection) < $continue = $PSCmdlet.ShouldContinue( "TARGET_$target", 'OPERATION', [ref]$yesToAll, [ref]$noToAll ) if ($continue)< Write-Output "Some Action [$target]" >> > 

Я добавил цикл foreach и коллекцию, чтобы показать их в действии. Я извлек вызов ShouldContinue из инструкции if , чтобы упростить чтение. Вызов метода с четырьмя параметрами — далеко не самый лучший подход, но я постарался сделать его как можно более понятным.

Реализация -Force

ShouldProcess и ShouldContinue должны реализовывать -Force различными способами. Хитрость таких реализаций заключается в том, что метод ShouldProcess всегда должен выполняться, а ShouldContinue не должен выполняться, если указано -Force .

Параметр -Force метода ShouldProcess

Если задать для ConfirmImpact значение high , первое, что попытаются сделать пользователи, — это подавить его запрос с помощью -Force . Во всяком случае, это первое, что делаю я.

Test-ShouldProcess -Force Error: Test-ShouldProcess: A parameter cannot be found that matches parameter name 'force'. 

Если вы припомните раздел ConfirmImpact , то поймете, что им на самом деле нужно вызвать его следующим образом.

Test-ShouldProcess -Confirm:$false 

Не все понимают, что это действительно необходимо сделать и что -Force не подавляет ShouldContinue . Поэтому для нормальной работы пользователей мы должны реализовать -Force . Взгляните на этот полный пример.

function Test-ShouldProcess < [CmdletBinding( SupportsShouldProcess, ConfirmImpact = 'High' )] param( [Switch]$Force ) if ($Force -and -not $Confirm)< $ConfirmPreference = 'None' >if ($PSCmdlet.ShouldProcess('TARGET')) < Write-Output "Some Action" >> 

Мы добавим собственный переключатель -Force в качестве параметра. Параметр -Confirm автоматически добавляется при использовании SupportsShouldProcess в CmdletBinding .

[CmdletBinding( SupportsShouldProcess, ConfirmImpact = 'High' )] param( [Switch]$Force ) 

Здесь основное внимание следует уделить логике -Force .

if ($Force -and -not $Confirm)

Если пользователь задает -Force , необходимо отключить запрос на подтверждение, если не указан параметр -Confirm . Это позволит пользователю принудительно вносить изменения, но ему по-прежнему придется их подтверждать. Затем мы зададим $ConfirmPreference в локальной области. Теперь с помощью параметра -Force можно временно присвоить $ConfirmPreference значение none, отключив запрос на подтверждение.

if ($PSCmdlet.ShouldProcess('TARGET'))

Если указать как -Force , так и -WhatIf , приоритет будет у -WhatIf . При таком подходе обработка -WhatIf сохраняется, так как ShouldProcess выполняется всегда.

Не добавляйте проверку для значения $Force в инструкции if с помощью метода ShouldProcess . Это неподходящий вариант для данного конкретного сценария, несмотря на то, что я продемонстрирую его в следующем разделе, посвященном ShouldContinue .

Параметр -Force метода ShouldContinue

Это правильный способ реализации -Force с ShouldContinue .

function Test-ShouldContinue < [CmdletBinding()] param( [Switch]$Force ) if($Force -or $PSCmdlet.ShouldContinue('TARGET','OPERATION'))< Write-Output "Some Action" >> 

Если поместить переменную $Force слева от оператора -or , она вычисляется первой. При такой записи выполнение инструкции if упрощается. Если значение $force равно $true , ShouldContinue не выполняется.

PS> Test-ShouldContinue -Force Some Action 

В этом сценарии не нужно беспокоиться о параметрах -Confirm и -WhatIf , так как они не поддерживаются ShouldContinue . Именно поэтому с данным методом следует работать иначе, чем с ShouldProcess .

Проблемы с областью действия

Предполагается, что при использовании параметров -WhatIf и -Confirm они применяются ко всем элементам внутри функции и всему, что она вызывает. Для этого они задают значение $true для параметра $WhatIfPreference или значение Low для параметра $ConfirmPreference в локальной области функции. При вызове другой функции эти значения используются для вызова метода ShouldProcess .

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

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

Основная проблема заключается в том, что модули скриптов не наследуют значения $WhatIfPreference или $ConfirmPreference (и некоторых других) при вызове из функций в других модулях скриптов.

Чтобы подвести итоги, сформулируем общее правило: данный подход работает правильно для двоичных модулей, но при работе и с модулями скриптов полагаться на него не следует. Если вы не уверены, проверьте его работу или просто считайте, что он работает неправильно.

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

Сейчас ведутся работы по устранению этой проблемы согласно RFC на GitHub. Дополнительные сведения см. в обсуждении распространения настроек выполнения за пределы области действия модуля скрипта.

Заключение

Мне нужно узнать, как использовать ShouldProcess всякий раз, когда это необходимо. Мне пришлось потратить много времени, чтобы научиться отличать ShouldProcess от ShouldContinue . Мне почти всегда нужно искать данные о том, какие параметры следует использовать. Поэтому не беспокойтесь, если вы все еще путаете их время от времени. Эта статья будет всегда у вас под рукой. Уверен, что я сам буду часто к ней обращаться.

Если вам понравилась эта публикация, поделитесь со мной своими идеями в Twitter по приведенной ниже ссылке. Мне всегда приятно общаться с людьми, которым были полезны мои материалы.

Совместная работа с нами на GitHub

Источник этого содержимого можно найти на GitHub, где также можно создавать и просматривать проблемы и запросы на вытягивание. Дополнительные сведения см. в нашем руководстве для участников.

Для чего нужна папка TEMP в WINDOWS?

В операционной системе Windows XP, Windows 7, Windows 8, Windows 10 есть папки для хранения временных файлов игр и программ — Temp. Когда вы корректно выключаете программу, то временные файлы удаляются, но если работа прекращена неправильно (выключили свет и т.д.), то файлы так и остаются на компьютере и их придется удалять вручную. Можно ли удалить папку Temp? Нет, нельзя! Удалить вы можете все файлы, находящиеся в ней, но не саму папку, иначе программы не смогут устанавливаться.

Папка Temp

Для того, чтобы очистить папку Temp в Windows XP, Windows 7, Windows 8, Windows 10 нужно ее найти. Для этого отрываем «Компьютер», далее «Локальный диск C» — «Windows» — «Temp». В этой папке выделяем все файлы удаляем.

Очистить папку Temp

Если появляется сообщение о том, что невозможно удалить какой-то файл, то пропустите его. Это значит, что он запущен программой и если вы правильно завершите работу, то он сам удалится.
Вот таким образом мы проводим очистку папки Temp в Windows XP, 7, 8, 10

Папка AppData

Вторая папка для хранения временных файлов — AppData Local Temp. Так как она скрытая, то сначала нужно включить отображение скрытых файлов. Для этого зайдите в Панель управления — Оформление и персонализация — Параметры папок — переходим во вкладку «Вид». Отмечаем пункт в самом низу «Показывать скрытые файлы, папки и диски». Нажимаем Ок. Только теперь мы можем найти папку AppData. Вам нужно пройти по следующему пути: «Компьютер» — «Локальный диск С» — Пользователи (Users) — Имя пользователя (Admin, Петя, Вася и т.д.) — AppData — Local — Temp.

Очищаем временые файлы в папке AppData\Local\Temp

  1. Компьютер — Локальный диск — Пользователи (Users) — UpdatusUser — Temp
  2. Компьютер — Локальный диск — Пользователи (Users) — Общие (All Users) — Temp
  3. Компьютер — Локальный диск — Пользователи (Users) — Default — Temp

Скачивание файлов для просмотра сделать в папку temp

Особенно раздражает, когда Google выдаёт ссылку на PDF, и ты ещё не знаешь, нужен ли он тебе, а браузер уже предлагает тебе его сохранить, без возможности предварительного просмотра внутри браузера. Нажимаешь «Открыть», а он у тебя потом в Downloads остаётся.

Nikolay68 @antoniovl
отредактировано

Особенно раздражает, когда Google выдаёт ссылку на PDF, и ты ещё не знаешь, нужен ли он тебе, а браузер уже предлагает тебе его сохранить, без возможности предварительного просмотра внутри браузера. Нажимаешь «Открыть», а он у тебя потом в Downloads остаётся.

aef40d88-570b-4da7-97c8-9b21dbd8072b-image.png

В чем проблема?

Участник движений «ПАПКИ ДОЛЖНЫ БЫТЬ НАД ЗАКЛАДКАМИ, А НЕ ВПЕРЕМЕЖКУ!»
и «ДАЁШЬ ДЕРЕВО ВМЕСТО ПРОСТЫНИ В ЗАКЛАДКАХ!»
Долой многолетний бардак в закладках в мобильной версии!

antoniovl @Nikolay68
отредактировано

@nikolay68 В том, что эта опция не всегда работает (у меня она включена). Сайт может выдавать HTTP хедеры, которые заставляют браузер насильно выводить диалог скачивания, даже если браузер сам может открыть этот файл без сторонней программы. Это может быть не только для PDF, но даже для JPG. Просто для картинок это практически не используется, а вот для PDF такое встречается довольно часто.

Nikolay68 @antoniovl
отредактировано

@nikolay68 В том, что эта опция не всегда работает (у меня она включена). Сайт может выдавать HTTP хедеры, которые заставляют браузер насильно выводить диалог скачивания, даже если браузер сам может открыть этот файл без сторонней программы. Это может быть не только для PDF, но даже для JPG. Просто для картинок это практически не используется, а вот для PDF такое встречается довольно часто.

Хорошо, тогда, как и предлагал выше, галка Удалить после просмотра рядом с кнопкой Открыть всех спасет и примирит.

Участник движений «ПАПКИ ДОЛЖНЫ БЫТЬ НАД ЗАКЛАДКАМИ, А НЕ ВПЕРЕМЕЖКУ!»
и «ДАЁШЬ ДЕРЕВО ВМЕСТО ПРОСТЫНИ В ЗАКЛАДКАХ!»
Долой многолетний бардак в закладках в мобильной версии!

sedative29rus @qraizer
отредактировано

UI ведь не вчера появился

Закладка как должна открываться? В новой вкладке или в текущей?
Nikolay68 @sedative29rus
отредактировано

UI ведь не вчера появился

Закладка как должна открываться? В новой вкладке или в текущей? Конечно в новой.

Участник движений «ПАПКИ ДОЛЖНЫ БЫТЬ НАД ЗАКЛАДКАМИ, А НЕ ВПЕРЕМЕЖКУ!»
и «ДАЁШЬ ДЕРЕВО ВМЕСТО ПРОСТЫНИ В ЗАКЛАДКАХ!»
Долой многолетний бардак в закладках в мобильной версии!

qraizer @sedative29rus
отредактировано

UI ведь не вчера появился

Закладка как должна открываться? В новой вкладке или в текущей? Как настроишь. По дефолту если, то ссылка на другой домен в новой, на этот же – в текущей: ссылка на другой домен интуитивно воспринимается как другой документ, а в пределах текущего документа новых окон не требуется и даже сбивает с толку, если вдруг.

sedative29rus @qraizer
отредактировано

Как настроишь

Именно. Кстати, потроллим фаерфоксовцев, которым только в 57 версии разрешили настроить, и то через about:config?) @antoniovl said in Скачивание файлов для просмотра сделать в папку temp:

Ну я лично не против, если это будет в виде настройки. Хотя бы в vivaldi://flags

47dcb963-8ce1-40c4-9f5a-b8a6a2a657b4-кк.png

Ради всего святого, создайте запрос на добавление галочки в настройках загрузок и мы все за него проголосуем.
Я ж не против папки Temp, я против таких формулировок:

с попытками объяснить мне, что мои же привычки неправильные, потому что в 7-zip не так.

qraizer
отредактировано qraizer

Та причём тут 7z-то. Не в 7z так, а в подавляющем большинстве приложений так — в этом основная мысль. 7z тут просто удачный пример реализации парадигмы работы с временными файлами. И MSOffice туда же.
Правильные ли привычки или не правильные – это холивар, бо субъективно это. И вообще, менее распространённые называть неправильными неправильно, скорее они просто странные.
У меня вот, к примеру, тоже есть странные привычки. Я работаю со встроенными системами, на данный момент 8 различных проектов одновременно. Это C и местами Ассемблер. На стороне ПК утилиты пишу на C++, причём местами жестоких, некисло так эксплуатирующих последние Стандарты языка. На работе соответственно стоит десяток сред для каждого микроконтроллера + ВизуалСтудия. Но при всём при этом я нигде не использую IDE, у меня вместо них есть Far Manager с десятком плагинов, собираю всё это безобразие с командной строки, а система сборки построена на makefiles. (Наверное, во мне умер линуксоид, хоть я и заядлый виндузятник. И я сейчас не как пользователь говорю, а как разработчик.) Мне так просто удобно, я так привык. IDE используются лишь как отладчики.
По теме темы. Мне часто приходится искать документацию по используемым процессорам и компонентам платы. Если кто работал с ARM, те знают, как тяжело бывает найти нормальные мануалы по конкретным чипам, наверху поисковиков попадаются всё сплошь общие описания ядер и архитектур вместо конкретного, например, AM3505, а мне-то не ядро нужно, а периферия. Таймеры там, модуль ethernet, UART итп итд. Или вот поди найди описание какого-нибудь MPC8308, это семейство PowerPC если что. А когда речь заходит за SDRAM, Flash или USB-чипы, пиши пропало, конкретные мануалы будут вообще где-нибудь на странице эдак восьмой.
Ну и вот представьте себе счастье тыкать 8*10 ссылок с документами, каждый раз понимая, что это не то, а потом вычищать свои загрузки от мусора с именами dd125bn-76643.pdf и подобными, и всё ради того, чтобы наконец найти нужный и тыкнуть в «Сохранить как. «, дав документу нормальное узнаваемое имя. Невесело, как ни крути.

FoxWMulder @qraizer
отредактировано FoxWMulder

Ну и вот представьте себе счастье тыкать 8*10 ссылок с документами, каждый раз понимая, что это не то, а потом вычищать свои загрузки от

никак не могу понять логику. вот вы потыкали, нашли нужное и нужно его сохрнаить. если по вашей логике кнопка «открыть» будет ОТКРЫВАТЬ

47dcb963-8ce1-40c4-9f5a-b8a6a2a657b4-кк.png

(что само по себе меня уже коробит, файл не может просто так взять и открыться если никуда не скачен, на крайняк в оперативку), то когда вы найдёте нужное всё равно нужно будет это отдельно СОХРАНИТЬ. Почему же не использовать папку Downloads (которая в настройках указана) как папку для мусора, а когда вы найдёте нужный файл то вы его сохраните в нужную папку? как я понимаю весь сыр бор вокруг того что вам принципиально чтобы файлы для открытия сохранялись в системную папку, а не в указанную в настройках. но при этом вы почемуто не хотите её в настройках указать и использовать как мусорную папку, потому что по вашей логике, простите может не по вашей конкретно, но именно так выглядело сообщение одного из ораторов, файл дожен открываться ВООБЩЕ без сохранения куда-либо. я не понимаю какая разница куда этот файл сохраняется в системную папку или в указанную папку в настройках! @sedative29rus said in Скачивание файлов для просмотра сделать в папку temp:

Ради всего святого, создайте запрос на добавление галочки в настройках загрузок и мы все за него проголосуем.

самый логичный выход.

MyVivaldi Vivaldi Wiki Telegram-channel
Win11 22H2; Не держим: UAC, антивирусов, Windows Security
WinXP/Win7 — ������

qraizer
отредактировано qraizer

Потому что Download не мусор. Возможно, у Вас привычка так его характеризовать, но большинство людей отделяют мусор от загрузок. Даже ОСь имеет для того и другого различные каталоги. P.S. Ещё раз, ради уточнения. «Открыть» ассоциируется именно что с просмотром документа без получения его к себе. (Понятно, что браузер по-любому его предварительно скачает, но мы ж не о технических деталях, а о представлении рабочего процесса пользователем. Правда, и тут не всё так однозначно, PDFы, вот можно просматривать и в потоковом режиме, и спец.плагины нередко так и делают. правда, всё равно скачивают, но в фоне.) Первая ассоциация, увидев «Скачать» рядом с «Открыть» – это «когда я его открываю, я его не скачиваю, я его только просматриваю», потому что альтернатива вот тут рядом, и если иначе, то в чём их разница, непонятно. Ну, один раз попробуешь, поймёшь, конечно, но недоумение, зачем так сделали, останется. Скачивают же к себе по-любому затем, чтобы потом с этим работать, и никакие специальные «Открыть» для этого не нужны. В нынешнем же виде функционал «Открыть» просто лишний, т.к. открывать скачанное пользователь и так умеет, а вот просмотреть без того, чтобы скачать, возможности нет. P.P.S. Кстати, Far умеет открывать документы прям из архивов и как и 7z предлагает впоследствии запаковать обратно, если вдруг, но не об этом счас. Его очень полезной фичей является то, что он отслеживает использование таких временных файлов и прибивает сам, так что чистить за ним temp приходится вообще редко.

FoxWMulder @qraizer
отредактировано FoxWMulder

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

потому что то что нужно у меня привычка раскидывать по нужным папкам. а не хранить всё в куче. видимо в этом дело? @qraizer said in Скачивание файлов для просмотра сделать в папку temp:

отделяют мусор от загрузок

именно. и я о том же.

MyVivaldi Vivaldi Wiki Telegram-channel
Win11 22H2; Не держим: UAC, антивирусов, Windows Security
WinXP/Win7 — ������

qraizer
отредактировано

Кстати, а вот такой вопрос, немного не по теме, но связанный: кто-нибудь знает, используется ли при загрузке файлов браузерный кеш? Ну т.е. если вдруг связь рвётся, то повторная загрузка будет использовать частичный прогресс неудачной попытки? И если нет, то почему? Припоминаю, что в IE6 отличался тем, что в нём нередко такое канало, но тогда и скорости были. хм.

sedative29rus @qraizer
отредактировано sedative29rus

Кстати, а вот такой вопрос, немного не по теме, но связанный: кто-нибудь знает, используется ли при загрузке файлов браузерный кеш? Ну т.е. если вдруг связь рвётся, то повторная загрузка будет использовать частичный прогресс неудачной попытки? И если нет, то почему? Припоминаю, что в IE6 отличался тем, что в нём нередко такое канало, но тогда и скорости были. хм.

Вопрос оказался с интересностями. Вообще, в папке загрузок создаётся файл .crdownload в который и пишется загружаемое. При обрыве связи он и соответственно прогресс загрузки сохраняется, а при возобновлении продолжается с того места, где остановился.
Интересности начинаются дальше. В папке кэша при этом действительно появляется какой-то файл фиксированного размера, который при обрыве связи пропадает и больше не появляется. Не совсем понятно, что в нём. А если запустить браузер с —disk-cache-dir=nul, то всё работает точно так же, но без этого файла.
И вторая интересность — выявленный баг с графическим интерфейсом. Счётчик загрузки не обновляется сам и изменяется только при кликах в разных местах браузера.
Вот, я не поленился, видео на mega.nz. upd.: @Shpankov я там по-быстрому накорябал VB-85407

Shpankov Vivaldi Team @sedative29rus
отредактировано
antoniovl
отредактировано antoniovl

Вот ещё довод. Firefox сохраняет в Temp. Edge сохраняет в Temp. В Opera и Edge, правда, всё по-другому. Они парни простые: видят файл для скачивания — скачивают. Пользователя даже не спрашивают, хочет ли он вообще его скачивать. Продолжим. 7zip сохраняет в Temp. MS Office сохраняет в Temp. Far сохраняет в Temp.

antoniovl @FoxWMulder
отредактировано

потому что то что нужно у меня привычка раскидывать по нужным папкам.

Хорошая привычка, кто ж спорит. Но ведь проще раскидывать по папкам, когда у тебя в Downloads лежит только то, что нужно, без всякого мусора, типа dd125bn-76643.pdf. Или я чего-то не понимаю?

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *