使用Powershell 7更新IIS的SSL绑定



我正在尝试将PS5脚本更新为PS7,主要是因为该脚本确实需要PS Core模块。

脚本的一部分涉及更新IIS绑定以使用不同的SSL证书。证书已经在存储中,可以使用了——我只需要更改绑定上的指纹。

我的PS5脚本使用Get-WebConfiguration获取绑定,然后循环通过,在相关绑定上调用RebindSslCertificate

我尝试过使用Set WebConfigurationPropertySet-WebBinding;既没有错误,但也没有实际更新与IIS的绑定-示例:

Set-WebConfigurationProperty  -Name 'certificateHash'  -Value $newCert.Thumbprint -PSPath "IIS:\"  ` 
-Filter "/system.applicationHost/sites/site/bindings/binding[@protocol='https'][@bindingInformation='*:443:hostname']"   `

有人能帮我指出我所缺少的东西的正确方向吗?

谢谢,做记号

附言:如果这是一个重复的问题,我很抱歉,但我能找到的只是不起作用或与有关的旧东西-设置项目IIS:\SslBindings">也许有办法让IIS驱动器与远程处理一起工作?

于2021年9月10日使用Powershell 7.1.4运行。

截至撰写本文之日,这是github for PowerShell上的一个悬而未决的问题。

参考链接:https://github.com/PowerShell/PowerShellModuleCoverage/issues/14

问题是PowerShell 7基于.NET Core,PS模块WebAdministrator基于.NET Framework。

当你运行

Import-Module WebAdministration
WARNING: Module WebAdministration is loaded in Windows PowerShell using WinPSCompatSession remoting session; please note that all input and output of commands from this module will be deserialized objects. If you want to load this module into PowerShell please use 'Import-Module -SkipEditionCheck' syntax.

请注意警告中提到了"WinPSCompatSession"。如果模块清单没有指示该模块与PowerShell Core兼容,则会通过Windows PowerShell兼容性功能加载该模块。

该模块似乎部分在兼容模式下工作,但是,如果您尝试使用IIS:\,则会出现错误。

或者,如果在警告中运行参数,则会得到此消息。

Import-Module -SkipEditionCheck WebAdministration
Import-Module: Could not load type 'System.Management.Automation.PSSnapIn' from assembly 'System.Management.Automation, Version=7.1.4.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'.

PowerShell 7.1.4中的快速测试将显示您无法访问IIS连接器。

PS C:WindowsSystem32> Import-Module WebAdministration
WARNING: Module WebAdministration is loaded in Windows PowerShell using WinPSCompatSession remoting session; please note that all input and output of commands from this module will be deserialized objects. If you want to load this module into PowerShell please use 'Import-Module -SkipEditionCheck' syntax.
PS C:WindowsSystem32> cd IIS:
Set-Location: Cannot find drive. A drive with the name 'IIS' does not exist.

但是,如果你打开PowerShell 6,你可以做到这一点,没有问题。

PS C:WINDOWSsystem32>  Import-Module WebAdministration
PS C:WINDOWSsystem32> cd IIS:
PS IIS:> dir
Name
----
AppPools
Sites
SslBindings

我的下一步是通过直接加载.NET程序集来实现这一点。将使用解决方案进行更新

[System.Reflection.Assembly]::LoadFrom("$env:systemrootsystem32inetsrvMicrosoft.Web.Administration.dll")

相关内容

  • 没有找到相关文章

最新更新