提醒:本页面将不再更新、维护或者支持,文章、评论所叙述内容存在时效性,涉及技术细节或者软件使用方面不保证能够完全有效可操作,请谨慎参考!

在服务器界Windows操作系统一直被吐槽不够稳定、不够安全和占用资源,微软也是痛定思痛决定一改往日,遂推出了Server Core系列的服务器版本,顾名思义——Core表示核心,也就是说这个系列的服务器版本将仅保留必要的核心,去除一切不必要的组件。大家对于服务器版本的Linux可能会有印象,那种黑乎乎的命令行界面,没有图形系统,这次微软的Core系列也习得此精髓不再提供交互桌面系统,系统的启动和管理等都通过命令提示符操作,不过与Linux不同的是,Windows Server Core不是纯粹的字符式操作环境,而保留了基本的图形系统,毕竟从NT时代Windows图形子系统就成为内核的一部分了,贸然去除必然会带来不必要的麻烦,因为基本图形系统的存在,一些图形界面的程序实际上也是可以运行的,比如系统自带的记事本(notepad)、注册表编辑器(regedit)等等。

最近折腾了ProxmoxVM虚拟化环境,顺带也尝试了Windows Server 2016 Core版本,本文下面将简单介绍一下Server Core的配置,首先对于Windows Server 2016 Core的安装我就不多介绍了,这部分和大多数Windows安装类似,其中我们使用的镜像 来自微软官方的评估版本

安装完成后启动计算机,将会提示你配置管理员账号密码,直接输入两次符合强度要求的密码即可,这里不再强调。

1 升级评估版

如果你的Windows Server安装镜像不是微软提供的评估版本,这此步骤可以略过,否则评估版本时效过后将无法正常使用操作系统的功能。要将评估版本Windows Server 2016升级到正常版本,分别执行下面的命令。

首先获取可以升级的版本类型:

DISM.exe /Online /Get-TargetEditions

在列出的版本里面选择你想升级的版本,比如我们这里是ServerDatacenterCor,准备好序列号,然后使用下面的命令执行升级:

DISM /online /Set-Edition:ServerDatacenterCor /ProductKey:XXXXX-XXXXX-XXXXX-XXXXX-XXXXX /AcceptEula

注意此命令的 Set-Edition: 后面的是第一条命令获取的可升级版本类型, ProductKey: 后面的是你的序列号,我这里就不提供了,具体操作如下图所示:

DSIM升级Windows评估版

操作完毕后会提示重新启动计算机,输入 Y 重新启动,如下图所示:

DSIM升级Windows评估版

如果企业在内网部署了KMS服务器的话,那么可以通过下面的命令激活操作系统:

slmgr.vbs -skms 192.168.172.16
slmgr.vbs -ato

注意 192.168.172.16 是我们部署的内网KMS服务器地址,请根据实际替换成自己部署的服务器域名或者IP。

2 开启ICMP(允许ping等命令)

Windows Server Core默认是带有Windows Firewall防火墙的,所以直接ping是无法ping通的,如果有ping的需要,可以参考本节允许防火墙放行ICMP通讯,使用下面的命令放行ping通讯:

netsh firewall set icmpsetting 8

操作如下图所示,完成后此服务器主机将可以接受外来ping请求。

防火墙允许ICMP的PING

如果要禁止ping,则使用下面的命令完成:

netsh firewall set icmpsetting 8 disable

3 修改计算机名称

为了便于管理,我们需要将新安装的服务器系统重新命名,当然由于图形交互的缺失,我们只能使用命令行进行这项操作,有关修改计算机名称的命令如下:

netdom renamecomputer %COMPUTERNAME% /Newname "你要设置的新名字"

比如我这里将这台计算机名称改成 pve-skunk ,如下图所示:

通过命令修改计算机名称

Do you want to proceed (Y or N)? 提示下输入 Y ,然后使用命令 shutdown -r -t 0 重启以使重命名生效。

4 开启RDP 3389远程桌面

ProxmoxVM自带的远程桌面操作起来颇为不便,我们可以选择开启Windows自带的RDP远程桌面以便于使用mstsc进行远程管理,开启的命令如下:

cscript %windir%\system32\scregedit.wsf /ar 0

当出现Registry has been updated,说明操作成功完成,我们也可以验证一下,使用下面的命令:

cscript %windir%\system32\scregedit.wsf /ar /v

如果出现0,表示远程桌面已经开启,如下图所示:

打开RDP远程桌面管理

5 管理Windows Update更新

Windows Server Core系列注重精简高效,大部分不必要的组件已经被精简,所以打补丁的频率不是很高,系统默认的更新策略是仅下载(手动更新),毕竟是服务器系统,可以通过下面的命令验证当前的更新策略:

%systemroot%\system32\Cscript scregedit.wsf /AU /v

如果我们希望启动自动更新,那么通过下面的命令来完成:

Net stop wuauserv 
%systemroot%\system32\Cscript scregedit.wsf /AU 4 
Net start wuauserv

禁用自动更新则使用下面的命令:

Net stop wuauserv 
%systemroot%\system32\Cscript scregedit.wsf /AU 1 
Net start wuauserv

立即检查可用更新使用命令 Wuauclt /detectnow 完成。

6 启用网络共享

这里主要是我在安装远端服务器共享的程序时遇到的问题,远端服务器共享带有密码,所以在使用前必须提前输入用户名和密码,否则会出现Access Denied错误,使用下面的命令:

net use \\server\share /user:Administrator 123456

这里的 \\server\share 是远端服务器的共享路径, Administrator 是访问的帐户名, 123456 是密码,请根据需要修改,完成此条命令后再访问带密码的共享就不受限制啦。

7 卸载已经安装的程序

这里依然是命令的方式,但毕竟没有控制面板来的方便,看看有限的虚拟机资源,还是忍了。使用regedit命令直接打开图形界面的注册表编辑器,爽快,难得见到亲切的图形操作方式,定位到 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall 键,找到要卸载程序的键名,在右边编辑UninstallString,复制待编辑的字符串值,关闭注册表,在命令行中直接粘贴这个字符串并回车即可调出卸载程序,如下图所示:

使用注册表卸载应用程序

除此之外还有一种方式就是使用PowerShell命令,通过命令 powershell 直接进入控制台,不得不说PowerShell就是为管理Windows服务器而生。

首先列出可卸载的应用程序列表:

Get-WmiObject -Class Win32_Product | Select-Object Name,IdentifyingNumber

记住要卸载的应用程序 IdentifyingNumber ,比如我们这里是 {786970C5-E6F6-4A41-B238-AE25D4B91EEA} ,然后编辑并使用下面的命令执行卸载:

Get-WmiObject -Class Win32_Product | Where-Object {$_.IdentifyingNumber -match '{786970C5-E6F6-4A41-B238-AE25D4B91EEA}'} |  Invoke-WmiMethod -Name "Uninstall"

上面这条命令 -match 后面的GUID请自行替换成自己要卸载程序的 IdentifyingNumber

参考资料: