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}

ws2012r2-logo

HOWTO: 解决无法使用内置管理员账户打开 Internet Explorer

        上个月 gOxiA 与大家分享了 从初始 ServerCore 模式向 FullServer 转换 的经验。如果你亲身经历了这一转换过程,可能会遇到如下图的问题!

11

        当我们从开始界面打开 IE 时,系统会提示“无法使用内置管理员账户打开 Internet Explorer。请使用其他账户登录,然后再试依次。”出现这个问题的主要原因是当用户从 ServerCore 向 FullServer 转换时,系统策略会自动将开始界面的 IE 设置为以 Modern UI 方式来启动,而 Windows Server 2012 R2 的 FullServer 模式并未包含桌面体验的组件,如:应用商店、Modern UI 版的 IE……,导致用户无法启动 Modern UI 应用。

        而解决这个问题最为简单有效的做法就是进入“控制面板”打开“Internet 选项”,切换至“程序”选项卡,复选“IE 磁贴用于打开桌面上的 Internet Explorer”选项即可。

image

ws2012r2-logo

从初始 ServerCore 模式向 FullServer 转换

        还记得 12年12月 gOxiA 与大家分享的两篇关于 Windows Server 2012 运行模式的文章“HOWTO:切换至 Windows Server 2012 的 Minimal Server 模式”、“Windows Server 2012 的四种运行界面模式”,介绍了 Windows Server 2012 如何在几个运行界面模式下进行转换。当时的测试都是基于初始 FullServer 模式进行的,即:带有 GUI 的服务器完整模式。所以当我们执行模式转换时并不会遇到问题,如果 Windows Server 初始安装时是 ServerCore 模式,那么当我们要向 Minimal 或 FullServer 转换时就会遇到错误,如下图所示:

1

        出现这个错误的原因是以前的 Windows 版本中,即使禁用了某个服务器角色或功能,相应的二进制文件仍会保留在磁盘上,占用着磁盘空间,当然这一特性也使我们在日后重复安装角色或功能时而无需提供安装源。但在 Windows Server 2012 中则又有所改变,用户不仅可以禁用某个角色或功能,还可以完全删除相应的文件。即:要完全删除某个角色或功能时,在 Uninstall-WindowsFeature 中使用 –Remove 参数。

        正因为如此,当 Windows Server 初始安装选择的是 ServerCore 模式时,一些角色或功能的二进制文件并未存储在当前系统中,所以当使用常规命令行进行安装时便会出现错误。所以我们需要在执行 Install-WindowsFeature 时使用 –source 参数指定安装源。完整的命令行参考如下:

Install-WindowsFeature server-gui-mgmt-infra –source wim:d:\sources\install.wim:2

2

3

        其中,结尾“:2”为 Install.wim 映像索引 2,即 Windows Server 2012 R2 Standard,与本例初始安装的系统版本对应,如果需要确认 WIM 文件的信息,可以参考如下命令行:

dism /get-wiminfo /wimfile:d:\sources\install.wim

        查阅 TechNet Library 管理服务器核心服务器 资料,发现在 1.5 转换成“完全安装”模式 小节中提到如果希望使用 Windows 更新而不是某个 WIM 文件作为源,则只需要为 Install-WindowsFeature 使用 –Restart 参数,安装时便会自动从微软官方站点获取更新文件。(PS:有意思的方式,-Restart 可是重启参数啊!!!)不过实际测试此种方式并不实用,网络速度是最大的瓶颈!

4

        解决了一个小小的问题,却积累了多个经验!

分页: 6/51 第一页 上页 1 2 3 4 5 6 7 8 9 10 下页 最后页 [ 显示模式: 摘要 | 列表 ]