0
我正在嘗試編寫一個腳本,該腳本將循環遍歷所有本地IIS網站,並在我強制更新域密碼時更新其物理路徑憑據。通過powershell更新IIS 6 WebSite憑證
下面的作品...你運行它第一次......
function Set-Site-Credentials(
$SiteElement,
$Credentials
){
$SiteElement.virtualDirectoryDefaults.userName = "$($Credentials.Domain)\$($Credentials.UserName)"
$SiteElement.virtualDirectoryDefaults.password = $Credentials.Password
$SiteElement | Set-Item -Force
}
運行在此之後,我注意到以下性能也得到設定
$SiteElement.userName #Same as was set earlier on .virtualDirectoryDefaults
$SiteElement.password #Same as was set earlier on .virtualDirectoryDefaults
隨後,我隨時嘗試使用上面的代碼更新憑據,這兩個屬性保持不變,並且這些更改不會在IIS中產生影響。
所以結果是:
$SiteElement.userName #Unchanged
$SiteElement.password #Unchanged
$SiteElement.virtualDirectoryDefaults.userName #New value
$SiteElement.virtualDirectoryDefaults.password #New value
和IIS網站仍顯示在UI老用戶名和憑據失敗。
所以很自然我想在我的更新功能設置這些額外的2個屬性:
function Set-Site-Credentials(
$SiteElement,
$Credentials
){
$SiteElement.userName = "$($Credentials.Domain)\$($Credentials.UserName)"
$SiteElement.password = $Credentials.Password
$SiteElement.virtualDirectoryDefaults.userName = "$($Credentials.Domain)\$($Credentials.UserName)"
$SiteElement.virtualDirectoryDefaults.password = $Credentials.Password
$SiteElement | Set-Item -Force
}
的代碼拋出任何錯誤或警告,但最終的結果是一樣的,那2點額外的屬性保持不變。
我用下面的代碼獲取「$ SiteElement」
$sites = Get-ChildItem IIS:\Sites
$sites | Foreach-Object { Set-Site-Credentials -SiteElement $_ -Credentials $newCredentials }
此外,在我重新啓動腳本的末尾IIS使用這個命令:
Restart-Service W3SVC