Кто-то из 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!"
}
Привет, Джеймс! Добро пожаловать в СО. Могу я спросить, чего вы пытаетесь достичь с помощью приведенного выше кода? Если сеанс PowerShell завершится, переменных больше не будет. Или, если вы вызываете сценарий (вызывая его по имени или используя, например,
&
), а не через точку.
, он должен находиться в своей собственной (дочерней) области видимости. Кроме того, удаление всех импортированных модулей определенно может иметь некоторые негативные последствия (рекомендую попробовать).Что вы пытаетесь достичь?
Remove-Module
удаляет модули из памяти.Две вещи: во-первых, я пытаюсь запустить рассматриваемый скрипт без выхода и перезапуска сеанса PowerShell.
Во-вторых, скрипт, в который я добавил код, не удаляет временную папку при выходе, как и предполагалось. Мне сказали, что, возможно, переменная или модуль в памяти блокирует эту папку.
Итак, вы пытаетесь повторно инициализировать PowerShell до состояния по умолчанию, не закрывая и не открывая заново? Этот ответ может быть тем, что вы ищете там.
Для сценария, не удаляющего временную папку, вам, вероятно, следует задать для этого отдельный вопрос или отредактировать этот вопрос, чтобы сосредоточиться на этой конкретной проблеме. PowerShell, как правило, не собирается самостоятельно очищать содержимое, созданное в любом из каталогов TEMP, это то, что вам придется реализовать. Модули могут использовать свои собственные файлы TEMP, но они также должны очищать их, когда это необходимо.