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