Windows Server 2016 Core服务器基本配置
提醒:本页面将不再更新、维护或者支持,文章、评论所叙述内容存在时效性,涉及技术细节或者软件使用方面不保证能够完全有效可操作,请谨慎参考!
在服务器界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:
后面的是你的序列号,我这里就不提供了,具体操作如下图所示:
操作完毕后会提示重新启动计算机,输入
Y
重新启动,如下图所示:
如果企业在内网部署了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请求。
如果要禁止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,表示远程桌面已经开启,如下图所示:
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
。
参考资料:
- KMS Error: 0xC004F069 On a computer running Microsoft Windows non-core edition, run 'slui.exe 0x2a 0xC004F069' to display the error text.
- Enable ping reply for Windows Server 2012 R2 Core
- Steps to access the Windows Server Core through Remote Desktop
- Patch a Server Core installation
- Windows shares via command line with user/pass, without mapping the drive?
- Uninstalling Applications in Server Core