logo_winserver2012_thumb[1]

Windows Server 2012 Essentials 因执行 SFC 引发的 RWA 访问故障

        前端时间在测试 RDS,所以在现有生产环境内部署了一台 RDS,访问都很正常,计划将其发布到外网已方便从 Internet 上直接访问,所以需要 RDG(Remote Desktop Gateway),而当前环境下的域控是基于 Windows Server 2012 Essentials(WS2012Ess)的,默认启用了 RWA,也就能够提供 RDG 的角色。

        当在 RDS 上添加这台 WS2012Ess 作为 RDG 时遇到了错误,提示“无法执行操作,因为操作 ResetRunspaceState无效……”,排错无果向 MSFT 提交了 Case,具体细节不再叙述,只提重点!按工程师的建议对 WS2012Ess 执行了dism /online /cleanup-image /checkhealth、/scanhealth、/restorehealth,以及 sfc /scannow 检查和修复的操作,当时也确实发现了问题并得到了修复,最后在此配置 RDS 便成功了。

Screenshot_2014-04-12-00-08-37

        RDS 是好了,但没想到 RWA 又出了故障,第二天才发现用户在访问 RWA 时报错“未能加载文件或程序集 WSSg.Web.Internal, Version=6.2.0.0, Culture=neutral, PublickKeyToken=31bf3856ad364e35 或它的某一个依赖项。系统找不到指定的文件”。

ESS1

        使用 WS2012Ess 仪表板对 RWA 进行了修复,但总是失败!只得求助搜索引擎,没想到这个问题还真的有解,并且还是已知问题。

ess2

        KB2828269 描述了这一问题,并提供了解决方案,只需执行如下 PowerShell 命令行即可。

$BinDir = [System.Environment]::ExpandEnvironmentVariables("%programfiles%\windows server\bin")

$WebDir = [System.Environment]::ExpandEnvironmentVariables("%programfiles%\windows server\bin\WebApps")

$WebDir = get-childitem $WebDir –recurse

$List = $WebDir | where {$_.name -eq "web.config"}

foreach($listItem in $List){ if($listItem.DirectoryName -match "MacWebService") {continue;} ($a= Get-Content $listItem.FullName); $a = $a -replace "%SBSPRODUCTBINPLACEHOLDER%", $BinDir; remove-item $listItem.FullName; $f = [io.path]::Combine($listItem.DirectoryName, "Web.config"); $a >> $f}

Windows Server | 评论(0) | 引用(0) | 阅读(9584)
发表评论
昵称 [注册]
密码 游客无需密码
网址
电邮
打开HTML 打开UBB 打开表情 隐藏 记住我