从安装冻结到 PowerShell 自动化:我的 Windows Server 2019 之旅
Source: Dev.to
(请提供您希望翻译的具体文本内容,我将为您翻译成简体中文,同时保留原始的格式、Markdown 语法以及代码块和 URL。)
引言:挑战
我最近完成了一个综合实验项目:从零部署一个功能完整的 Windows Server 2019 环境。目标不仅是安装操作系统,而是像真实的系统管理员一样,通过自动化来处理用户、组和安全文件共享。
刚开始时,我感觉自己像个新手,但到项目结束时,我已经在编写多行 PowerShell 脚本来管理基础设施。
第1阶段:设置与“冻结”
我的实验环境运行在 Oracle VirtualBox 上。安装过程让我学到了虚拟化故障排除的第一个重要教训。
最初,Windows Server 的安装在“旋转点”启动画面上不断卡死。深入检查虚拟机设置后,我意识到现代服务器操作系统需要特定的虚拟化硬件特性。
解决方案
虚拟机配置缺少关键的处理器特性。我在 VirtualBox 的处理器设置中启用了 PAE/NX,并增加了视频内存。应用这些调整后,安装顺利完成,进入了桌面体验。
第2阶段:基础配置(手动部分)
以管理员身份登录后,第一步是为服务器分配身份。
在真实网络中,服务器需要静态地址,以便始终能够被定位。我为网络适配器配置了适合实验环境的静态 IPv4 地址(10.0.2.15)。
我还将计算机的通用 Windows 名称重命名为更具意义的名称:WIN‑SERVER‑01。虽然可以使用图形界面完成此操作,但我使用 PowerShell 进行快速重命名并重启:
Rename-Computer -NewName "WIN-SERVER-01" -Restart
第 3 阶段:自动化的力量(酷炫部分)
需求是创建多个用户(Alice、Bob、Charlie),将他们分配到部门(HR、IT),并确保他们在首次登录时更改密码。手动完成这些操作需要数十次点击,于是我编写了一个 PowerShell 脚本,在几秒钟内完成全部工作。
脚本方法
我使用 ISE 编写了一个利用循环和条件语句的脚本。它会在尝试创建用户或组之前检查其是否已存在,使脚本 idempotent(安全地多次运行)。
# Automating User Creation
$users = @("Alice", "Bob", "Charlie")
foreach ($user in $users) {
# Create the user
New-LocalUser -Name $user -Password $securePassword -Description "Staff"
# Force password change at next login
$userObj = [ADSI]"WinNT://$env:COMPUTERNAME/$user,user"
$userObj.PasswordExpired = 1
$userObj.SetInfo()
}

第4阶段:权限和加固
文件共享
我创建了受限文件夹 HRDocs 和 ITDocs。使用 PowerShell 确保只有相应的组能够访问其文档,遵循最小特权原则。
安全加固
作为基本的安全措施,我禁用了内置的 Guest 账户,以防止匿名访问。PowerShell 让此操作的验证变得轻而易举。

结论与经验教训
这个项目是一次关于 Windows Server 管理的绝佳速成课程。最大的收获不仅是知道 要 配置什么,更是知道 如何 高效地去做。
虽然 GUI 对学习有帮助,但 PowerShell 对于可扩展、可重复的系统管理至关重要。克服最初的安装障碍并看到我的脚本成功部署环境,感觉是一次巨大的成功。