Обновление IISAdministration на образе iis: nanoserver - PullRequest
0 голосов
/ 31 августа 2018

Я пытаюсь создать контейнер для веб-приложения, используя образ IIS nano docker. Но не могу использовать команды «New-IISSiteBinding», поскольку версия IISAdministration не устарела (1.0.0.0). Новая версия 1.1.0.0

В настоящее время Webapp работает на образе основного док-сервера iis, размер которого составляет 6 ГБ, тогда как iis nano составляет ~ 500 МБ. Так что, если я смогу заставить это работать, просто импортируя модули веб-прокси, тогда у меня будет облегченное изображение.

Я использовал этот образ докера microsoft / iis: nanoserver-sac2016

Я сделал следующие шаги

1) Ran Save-Module -Name IISAdministration -Path D: \

Эта команда была выполнена на другом компьютере, скопировала папку D: \ IISAdministration в «C: \ Program Files \ WindowsPowerShell \ Modules \ IISAdministration» и перезапустила контейнер.

Когда я выполнил Import-Module -Name IISAdministration, я увидел эти ошибки. Если я удаляю папку «C: \ Program Files \ WindowsPowerShell \ Modules \ IISAdministration» и выполняю «Import-Module -Name IISAdministration», то это работает.

PS C:\> Import-Module -Name IISAdministration
Import-Module : Could not load file or assembly 'Microsoft.Web.Administration, Version=7.0.0.0, Culture=neutral,
PublicKeyToken=31bf3856ad364e35'. The system cannot find the file specified.
At line:1 char:1
+ Import-Module -Name IISAdministration
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [Import-Module], FileNotFoundException
    + FullyQualifiedErrorId : System.IO.FileNotFoundException,Microsoft.PowerShell.Commands.ImportModuleCommand

PS C:\> Import-Module -Name 'C:\Program Files\WindowsPowerShell\Modules\IISAdministration\1.1.0.0\IISAdministration.psd1'
Import-Module : Could not load file or assembly 'Microsoft.Web.Administration, Version=7.0.0.0, Culture=neutral,
PublicKeyToken=31bf3856ad364e35'. The system cannot find the file specified.
At line:1 char:1
+ Import-Module -Name 'C:\Program Files\WindowsPowerShell\Modules\IISAd ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [Import-Module], FileNotFoundException
    + FullyQualifiedErrorId : System.IO.FileNotFoundException,Microsoft.PowerShell.Commands.ImportModuleCommand

2) Я попытался установить с помощью команды Install-Module -Name IISAdministration

Мы за прокси. Поэтому для загрузки я установил переменную Proxy и попытался загрузить. Тогда я получил эту ошибку.

PS C:\> .\install_iis.ps1
New-Object : Cannot find type [System.Net.Webproxy]: verify that the assembly containing this type is loaded.
At C:\install_iis.ps1:11 char:44
+ ... equest]::defaultwebproxy = New-Object System.Net.Webproxy($proxy_url)
+                                ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidType: (:) [New-Object], PSArgumentException
    + FullyQualifiedErrorId : TypeNotFound,Microsoft.PowerShell.Commands.NewObjectCommand

The property 'BypassProxyOnLocal' cannot be found on this object. Verify that the property exists and can be set.
At C:\install_iis.ps1:14 char:1
+ [system.net.webrequest]::defaultwebproxy.BypassProxyOnLocal = $true
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (:) [], RuntimeException
    + FullyQualifiedErrorId : PropertyAssignmentException

Pre-Install Docker Provider - need Nuget. About to Install..
Install-PackageProvider : Cannot bind parameter 'Proxy'. Cannot convert value "http://:8080" to type "System.Uri".
Error: "Invalid URI: The hostname could not be parsed."
At C:\install_iis.ps1:20 char:87
+ ...  -Verbose -RequiredVersion 2.8.5.201 -Force -Proxy $proxy_url -ProxyC ...
+                                                        ~~~~~~~~~~
    + CategoryInfo          : InvalidArgument: (:) [Install-PackageProvider], ParameterBindingException
    + FullyQualifiedErrorId : CannotConvertArgumentNoMessage,Microsoft.PowerShell.PackageManagement.Cmdlets.InstallPac
   kageProvider


NuGet provider is required to continue
PowerShellGet requires NuGet provider version '2.8.5.201' or newer to interact with NuGet-based repositories. The NuGet
 provider must be available in 'C:\Program Files\PackageManagement\ProviderAssemblies' or
'C:\Users\ContainerAdministrator\AppData\Local\PackageManagement\ProviderAssemblies'. You can also install the NuGet
provider by running 'Install-PackageProvider -Name NuGet -MinimumVersion 2.8.5.201 -Force'. Do you want PowerShellGet
to install and import the NuGet provider now?
[Y] Yes  [N] No  [S] Suspend  [?] Help (default is "Y"): y
WARNING: Unable to download the list of available providers. Check your internet connection.
PackageManagement\Install-PackageProvider : No match was found for the specified search criteria for the provider
'NuGet'. The package provider requires 'PackageManagement' and 'Provider' tags. Please check if the specified package
has the tags.
At C:\Program Files\WindowsPowerShell\Modules\PowerShellGet\1.0.0.1\PSModule.psm1:7405 char:21
+ ...     $null = PackageManagement\Install-PackageProvider -Name $script:N ...
+                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidArgument: (Microsoft.Power...PackageProvider:InstallPackageProvider) [Install-Pac
   kageProvider], Exception
    + FullyQualifiedErrorId : NoMatchFoundForProvider,Microsoft.PowerShell.PackageManagement.Cmdlets.InstallPackagePro
   vider

PackageManagement\Import-PackageProvider : No match was found for the specified search criteria and provider name
'NuGet'. Try 'Get-PackageProvider -ListAvailable' to see if the provider exists on the system.
At C:\Program Files\WindowsPowerShell\Modules\PowerShellGet\1.0.0.1\PSModule.psm1:7411 char:21
+ ...     $null = PackageManagement\Import-PackageProvider -Name $script:Nu ...
+                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidData: (NuGet:String) [Import-PackageProvider], Exception
    + FullyQualifiedErrorId : NoMatchFoundForCriteria,Microsoft.PowerShell.PackageManagement.Cmdlets.ImportPackageProv
   ider

WARNING: Unable to download the list of available providers. Check your internet connection.
PackageManagement\Get-PackageProvider : Unable to find package provider 'NuGet'. It may not be imported yet. Try
'Get-PackageProvider -ListAvailable'.
At C:\Program Files\WindowsPowerShell\Modules\PowerShellGet\1.0.0.1\PSModule.psm1:7415 char:30
+ ... tProvider = PackageManagement\Get-PackageProvider -Name $script:NuGet ...
+                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (Microsoft.Power...PackageProvider:GetPackageProvider) [Get-PackageProvi
   der], Exception
    + FullyQualifiedErrorId : UnknownProviderFromActivatedList,Microsoft.PowerShell.PackageManagement.Cmdlets.GetPacka
   geProvider

Install-Module : NuGet provider is required to interact with NuGet-based repositories. Please ensure that '2.8.5.201'
or newer version of NuGet provider is installed.
At C:\install_iis.ps1:22 char:2
+  Install-Module -Name IISAdministration -RequiredVersion 1.1.0.0
+  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (:) [Install-Module], InvalidOperationException
    + FullyQualifiedErrorId : CouldNotInstallNuGetProvider,Install-Module

Я видел, что на nanoserver по умолчанию не включены модули [System.Net.Webproxy].
Не могли бы вы помочь

1) Почему загрузка шага пакета IISAdministration вручную не удалась на шаге 1.

2) Если шаг 1 невозможен, как я могу установить модуль IISAdministration 1.1.0.0 после импорта модулей [System.Net.Webproxy] и его зависимостей.

Заранее спасибо.
Вишну

Обновление 1

Я пытался, как @ TheIncorrigible1 предложил в качестве ответа.
Я скопировал «iisadministration.1.1.0.nupkg» в c: \ test и выполнил «Register-PSRepository -InstallationPolicy Trusted -Name tmp -SourceLocation C: \ test».

Я вижу сообщение об установке Nuget. Но это уже там.

enter image description here

1 Ответ

0 голосов
/ 31 августа 2018

Простое добавление загрузки в папку модулей не приведет к ее правильной настройке. Вы можете получить модуль из powershellgallery . Отсюда его можно развернуть на вашем нано-сервере.

Далее вам нужно зарегистрировать локальное репо. Точка SourceLocation, куда вы бросаете свой модуль nupkg.

Register-PSRepository -InstallationPolicy Trusted -Name tmp -SourceLocation C:\tmp

И наконец:

Install-Module -Name IISAdministration -Repository tmp -Scope AllUsers -Force
...