ServerCore版本的日志管理

Windows Server 2008 RTM 已经有很长一段时间了,在这一版本的服务器中,有一个很大的改进(或称“倒退”)就是Windows Server Core,这一模式是一个全新的命令行模式,这结束了Windows只能和GUI一同安装的历史,我们现在可以通过一个没有Window的Windows为网络提供服务。那么为什么要安装服务器核心版本呢?
Windows Server 2008 的服务器核心安装选项提供以下优点:
  减少维护工作量。由于服务器核心安装选项仅安装拥有一台可管理的服务器(支持 AD DS、AD LDS、DHCP 服务器、DNS 服务器、文件服务、打印服务和流媒体服务角色)所必需的内容,因此相对于完全安装 Windows Server 2008,所需的维护工作较少。
  减小受攻击面。因为服务器核心安装是最小安装,所以服务器上运行的应用程序较少,从而可减小受攻击面。
  减少管理工作量。因为运行服务器核心安装的服务器上安装的应用程序和服务较少,所以需要管理的内容较少。
  需要更少的磁盘空间。服务器核心安装仅需要大约 1GB 磁盘空间即可进行安装,安装完成后,那么,服务器核心的安装之后有多大呢?仅需要大约 2 GB 磁盘空间即可运行。
服务器核心安装选项(Server Core)是可用于安装 Windows Server 2008 的新增选项。它将GUI的所有组件去掉,包括一些DLL和认为不必要的运行环境,这大大精简了Windows Server操作系统,在操作和管理方面则提供了CLI的界面。服务器核心安装为运行特定服务器角色提供最小安装环境,这降低了维护和管理要求,并减小了这些服务器角色的受攻击面。一句话概括Windows Server Core的特点就是更安全、更小、更节省。有多小呢?只需要512M内存和2G左右磁盘空间就足够了。

Windows Server 2008 R2完全架构于64位,但其Server Core可以通过Windows on Windows(WOW)功能支持32位的应用程序,如果用户还需要运行32位程序的话,这个功能还是比较有用。 Server Core就是微软用命令行模式代替了图形界面,并且只有少数应用可以安装。Server Core安装完成后,我们首次登录后仅仅可以看到一个命令行窗口,看不到菜单、任务栏等GUI,服务器驱动的安装、TCP/IP设置、服务器角色的安装管理等操作均需要通过命令行来进行设置。 Server Core的常见部署主要应用做基础构架服务器,如DNS、DHCP、IIS等,或者作为分支机构的只读域控制器,除此之外,还可以作为Windows虚拟化宿主系统,可以运行微软虚拟化平台Hyper-V。

在Server Core中我们安装的是所需的服务器角色和特征,其他的角色默认是不安装的,这样对于管理员来说可以专著于某一个应用,提高了工作效率,也降低了后期IT管理费用,总体降低了企业TCO成本。 Windows的图形界面虽然大大简化了操作,但是多个GUI也增加了出现漏洞的可能。Server Core中仅提供了系统更改时间等少数GUI,Windows中常见的GUI、Shell、IE、OE、Media等在Server Core中都被取消,这样就使服务器的攻击表面大大减少,提高了服务器的安全性。 由于Server Core是一个最小的系统安装选项,安装的角色和特性降到了最低,省略了GUI,安装角色也不需要重启,这样就提高了系统的可用性,使系统工作更加稳定。 Server Core去掉了Windows的外壳,也没有安装不必要的功能,所以使空间占用大大降低,Server Core安装成功后大概占用1GB的磁盘空间,随着应用的安装还需要大概2GB的空间,这比Windows Server 2008的磁盘占用要少得多。在Windows中我们需要经常安装各种补丁,对于不同组件需要安装不同的补丁。在Server Core中由于只具备少数组件,我们免去了安装大量补丁的麻烦。.NET Framework的部分功能在2008 R2 Server Core得到支持,包括:.NET 2/3/3.5的子集和ASP.NET。另外,PowerShell也在Server Core上可用。IIS7在Server Core上缺少的功能仅仅是本地的管理GUI,可以通过远程进行管理 。
安装好的Server Core支持以下角色:
  .NET Framework 2.0, 3.0, 和3.5 子集, 包括WCF, WF和LINQ PowerShell 2.0
  通过WoW64 支持32位应用程序
  支持ASP.NET的IIS 7.5
  文件服务器资源管理器(FSRM)
  证书服务
呵呵,还记得在08Core版本中经典的命令行工具OCLIST,OCSETUP吗?它们在新版本中也有了继任者DISM,DISM既可以完成查看Role,Role Serivce,Feature的功能又可以去激活它们。
dism /online /get-features /format:table | findstr /ilc:”enabled”
dism /online /get-featureinfo /featurename:xxxxx
dism /online /enable-feature /featurename:xxxxx
Core版本的概述之后我们言归正传,EventLog作为最常用的排错手段,倍受专业工程师的关注。针对EventLog , Full Install 的版本基本上没什么可讨论的,但是ServerCore版本的特殊性决定了查看EventLog并非像Full Install 版本那样容易,所以归纳了以下三种查看ServerCore版本日志的方法,不足之处还请各位大侠们指正。
1. MMC Snapin
通过MMC插件远程的去查看ServerCore版本计算机上的日志,但需要注意的是防火墙跟权限的相关设定问题。
Core:
netsh advfirewall show currentprofile
netsh advfirewall set currentprofile settings remotemanagement enable
Win7:
cmdkey /add:servercore /user:itinfoadministrator /pass
mmc %windir%system32wf.msc
或者使用 runas
runas /user:itinfoadministrator /env /netonly "mmc %windir%system32wf.msc"
在打开高级防火墙策略之后,就可以使用Event Viewer远程连接到ServerCore啦!当然此方法可以简化为直接在servercore中配置高级防火墙策略允许EventViewer远程连接,命令如下。
netsh advfirewall firewall set rule group="remote event log management" new enable=yes
注:ServerCore的简体中文版使用起来很不方便因为规则都是用中文命名的,个人感觉不如英文好记

2. Core 版本自带的命令行工具–Wevtutil.exe
wevtutil el —- 枚举Log的名称
wevtutil qe system /rd:true /c:10 /f:text — 以文本格式先看10条

wevtutil qe system /rd:true /c:10 /f:text /q *[System[(EventID=1)]] —-枚举system log中所有error的条目(强大筛选器能起到事半功倍的效果)。wevtutil qe system /rd:true /c:10 /f:text /q *[System[(EventID=1 or EventID=2)]] —-查看system log中error跟warning的条目。
Wevtutil qe system /rd:true /c:10 /f:text /q *[System[(EventID>1000 and EventID<1200)]] —- 查看EventID在1000跟1200之间的条目。
wevtutil epl system c:system0409.evtx — 还是导出来看吧,方便点哦!
3. 叫做WEC (Windows Eventlog Collection)
ServerCore:winrm quickconfig
Win7 :wecutil qc 再通过命令 sc query wecsvc的状态是否是running
在创建subscription之后,默认会在forwarding中看到转发的事件。
ServerCore: 随便创建一个事件看看是否同步
eventcreate /t error /id 521 /l system /d "test test test" /so MyApp
灵活的使用以上三种方法,相信能够应付基于ServerCore的很多使用场景。