Подтвердить что ты не робот

Четкая сессия PowerShell

Есть ли команда, которая очищает текущие переменные сеанса powershell, которые я добавил?

Я использую командлет Add-Type, и я получаю сообщение об ошибке "Невозможно добавить тип. Имя типа уже существует".

4b9b3361

Ответ 1

К сожалению, вы не можете выгрузить сборки .NET, которые были загружены в AppDomain по умолчанию, что и делает Add-Type. Вы можете переименовать типы или пространства имен, чтобы хромать вместе, но в какой-то момент вам просто нужно выйти и перезапустить PowerShell.

Это не ограничение PowerShell, так как это ограничение .NET/CLR. Вы можете загружать сборки .NET в отдельные AppDomains, которые могут быть выгружены позже, но вы должны будете сами их закодировать, и это накладывает ограничения на типы, которые вы планируете использовать в отдельном AppDomain. То есть эти типы должны работать через .NET Remoting, поэтому они либо должны быть получены из MarshByRefObject, либо они должны быть сериализуемыми (и это относится ко всем объектам, на которые ссылаются их свойства, и так далее по графе объектов).

Ответ 2

Возможная "работа вокруг": откройте окно PowerShell, а затем запустите script enter powershell .\yourScriptHere.ps1

Это запускает новый экземпляр powershell, который выйдет, когда ваш script завершает работу. Если вы хотите "играть" в новом экземпляре, измените вызов на powershell -NoExit .\yourScriptHere.ps1, и новый экземпляр не будет завершен, когда завершится script. Введите exit, когда вам понадобится другой перезапуск и нажмите клавишу "стрелка вверх", чтобы получить предыдущую команду. Весь вывод script появится в том же окне. Накладные расходы для запуска нового экземпляра powershell низки - на моем ноутбуке осталось менее 1 секунды.