Добавьте 'Get-Module | Удалить-модуль; Clear-Host» для включенного кода PowerShell

avatar
James Johnson
9 августа 2021 в 02:13
59
0
1

Кто-то из Stack Overflow поделился приведенным ниже кодом PowerShell. У меня есть код, работающий в скрипте, который я изменил. Я бы хотел добавить к нему функции Get-Module | Remove-Module; Clear-Host.

И действительно ли это поможет или будет иметь какие-либо негативные последствия после запуска скрипта?

Я новичок в Stack Overflow, и у меня нет достаточной репутации, чтобы комментировать ветку, в которой найден код. Поэтому я задал новый вопрос.

### Start of script (store list of existing variable names)
$ExistingVariables = Get-Variable | Select-Object -ExpandProperty Name
### End of script (remove new variables)
$NewVariables = Get-Variable | Select-Object -ExpandProperty Name | Where-Object {$ExistingVariables -notcontains $_ -and $_ -ne "ExistingVariables"}
if ($NewVariables)
    {
    Write-Host "Removing the following variables:`n`n$NewVariables"
    Remove-Variable $NewVariables
    }
else
    {
    Write-Host "No new variables to remove!"
    }
Источник
briantist
9 августа 2021 в 02:38
2

Привет, Джеймс! Добро пожаловать в СО. Могу я спросить, чего вы пытаетесь достичь с помощью приведенного выше кода? Если сеанс PowerShell завершится, переменных больше не будет. Или, если вы вызываете сценарий (вызывая его по имени или используя, например, &), а не через точку ., он должен находиться в своей собственной (дочерней) области видимости. Кроме того, удаление всех импортированных модулей определенно может иметь некоторые негативные последствия (рекомендую попробовать).

Abraham Zinala
9 августа 2021 в 03:04
0

Что вы пытаетесь достичь? Remove-Module удаляет модули из памяти.

James Johnson
9 августа 2021 в 17:49
0

Две вещи: во-первых, я пытаюсь запустить рассматриваемый скрипт без выхода и перезапуска сеанса PowerShell.

James Johnson
9 августа 2021 в 17:50
0

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

Bender the Greatest
9 августа 2021 в 18:54
0

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

Bender the Greatest
9 августа 2021 в 18:56
0

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

Ответы (0)