Выгрузить загруженный системой модуль в PowerShell

#powershell #azure-service-fabric

#powershell #azure-service-fabric

Вопрос:

Если в системе уже установлены модули, скажите «servicefabric», и во время выполнения моего скрипта я хочу удалить этот модуль, поскольку он может быть предыдущей версии. И я хочу импортировать свой новый модуль servicefabric последней версии. Могу ли я узнать, как это можно сделать?

Я пробовал это:

 if(Get-Module -Name "ServiceFabric") 
{
    Remove-Module -Name "ServiceFabric"
}
  

Но это не удаление установленного системой модуля service fabric.

И этот же модуль отображается в списке с помощью приведенной ниже команды

 Get-Module -ListAvailable -Name "ServiceFabric"
  

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

Комментарии:

1. Вы хотите удалить или деинсталлировать модуль? Remove-Module просто выгружает модуль.

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

3. Get-Module -ListAvailable перечислены доступные модули, а не те модули, которые фактически загружены. Последнее — это то, что делает Get-Module without -ListAvailable .

Ответ №1:

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

Это не проблема Powershell — .Сеть не позволяет выгружать сборки. Вместо этого вам нужно выгрузить AppDomain, содержащий сборку.

Комментарии:

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

2. Я очень сомневаюсь, что вы сможете выгрузить AppDomain, поскольку он принадлежит Powershell, и попытка сделать это, вероятно, повлияет на среду. Можно ли избежать загрузки модуля в первую очередь?

3. Хм…. Я должен поместить его сверху, потому что мне нужно подключиться к кластеру, а затем развернуть приложение / обновить / перезаписать. Итак, могу ли я выбрать любой другой вариант, скажем, загрузить мою конкретную версию библиотеки dll Service Fabric и продолжить развертывание с помощью powershell.

4. Кто-нибудь может помочь в этом, пожалуйста. Поскольку я должен сделать это дальше.

Ответ №2:

Вы пробовали? Удалить-Название-модуля «ServiceFabric» -Принудительное выполнение ошибки автоматически продолжается. Вам не нужно проверять, загружен ли модуль. Просто удалите его, если таковой обнаружен.

Комментарии:

1. Я пробовал с вышеупомянутым. Когда я его выполняю, он не выдает ошибку. Но, поскольку мне приходится импортировать новые модули, и на основе импортированных модулей какой бы я ни написал код, он не выполняется. Когда я не импортирую новый модуль, что когда-либо ошибка, которую я получаю, та же ошибка, которую я получаю после импорта последнего модуля. Я разместил код удаления модуля в верхней части страницы сценария powershell.