簡體   English   中英

如何快速刪除 PowerShell 中的多個 IIS 綁定?

[英]How to remove multiple IIS bindings in PowerShell fast?

在版本升級過程中,我們當前的解決方案從一個站點獲取所有綁定(兩個虛擬 url 除外)並將它們設置在另一個站點上。

我目前正在通過 PowerShell 刪除綁定,但速度非常慢。 我查看了 SO 中的每個線程,幾乎每個解決方案都使用“Remove-WebBinding”。

這是我當前的代碼:

Get-Website -Name $siteName | Get-WebBinding  | Where-Object { $_.HostHeader -notlike '*dummy*' } | Remove-WebBinding;

我有 272 個(-2 虛擬)綁定要刪除,大約需要 3 分鍾。

任何想法如何更快地做到這一點?

順便說一句:一個一個地添加所有這些綁定也非常慢,但我想如果我能在這里找到答案,類似的解決方案也可以添加。

從評論中復制並擴大一點。

緩慢的原因

WebAdministration cmdlet 是很久以前設計的,它有很多缺點。

您觀察到的緩慢可以通過設計來解釋。 雖然它不是開源的,但我們可以猜測,每次調用Remove-WebBinding都會創建相關的底層對象(如ServerManager ),然后將更改提交到 IIS 配置文件。 因此,要刪除的綁定越多,花費的時間就越長(消耗的資源也就越多)。

解決方案

對於今天 (8+) 的所有受支持的 IIS 版本,您應該改用IISAdministration cmdlet 它們是新開發的,兼顧了靈活性和性能。

通過使用單個ServerManager object 並只提交一次更改,刪除綁定可以快得多。

嘗試在 PowerShell 腳本下運行:

Import-Module WebAdministration  
Get-WebBinding -HostHeader 'dummy' | Remove-WebBinding -Confirm:$true

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM