очистить сеанс PowerShell - PullRequest
16 голосов
/ 10 декабря 2010

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

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

Ответы [ 2 ]

7 голосов
/ 10 декабря 2010

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

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

6 голосов
/ 14 февраля 2013

Возможное «обходное решение»: откройте окно powershell и затем, чтобы запустить скрипт, введите powershell .\yourScriptHere.ps1

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

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