努力
加油

如何使用命令行或PowerShell管理Windows Server 2022无桌面版?

Windows Server 2022 Datacenter (Server Core / 无桌面版) 是生产环境的首选,因为它资源占用少、攻击面小、更新频率低。但“无桌面”意味着你失去了 GUI 的便利,必须依赖命令行或远程管理工具。

作为在一线运维过大量 Windows 集群和云主机的老鸟,我直接上干货。管理无桌面版 Windows Server 的核心逻辑只有一条:本地能做的,远程也能做;本地不能做的,用 PowerShell Remoting 补全。

以下是我日常高频使用的实战方案,按场景分类:

一、 基础连接与入口:SSH vs WinRM

以前大家习惯用 Enter-PSSession (WinRM),但现在微软强烈推荐并默认启用了 OpenSSH Server。

1. 使用 SSH 连接(推荐)

这是最接近 Linux 体验的方式,跨平台友好,且无需额外配置防火墙端口(如果已启用)。

  • 前提:确保服务器安装了 OpenSSH Server(Server 2022 默认可能未启用服务,需手动启动)。
    # 在服务器上执行一次(只需一次)
    Start-Service sshd
    Set-Service -Name sshd -StartupType 'Automatic'
  • 客户端连接:
    ssh administrator@<server-ip>

    注意:SSH 会话中只能运行标准的 CMD 命令或简单的 PowerShell 单行命令。复杂的交互式 PowerShell 体验不如 WinRM。

2. 使用 PowerShell Remoting (WinRM)

这是微软原生的远程管理方式,支持完整的 PowerShell 对象传递,适合脚本化和复杂管理。

  • 启用 WinRM(如果未启用):
    Enable-PSRemoting -Force
  • 远程进入交互会话:
    Enter-PSSession -ComputerName <server-ip> -Credential (Get-Credential)

    或者一次性执行命令:

    Invoke-Command -ComputerName <server-ip> -ScriptBlock { Get-Process }

二、 系统核心管理:没有事件查看器怎么办?

在无桌面版中,你不能双击打开“事件查看器”。你需要通过命令行获取日志。

1. 查看系统日志

# 查看最近 10 条错误事件
Get-WinEvent -FilterHashtable @{LogName='System'; Level=2} -MaxEvents 10 | Format-Table TimeCreated, Message -AutoSize

# 查看特定来源的日志(如 DNS 解析失败)
Get-WinEvent -FilterHashtable @{LogName='System'; ProviderName='DNS'} | Select-Object -First 5

2. 性能监控(替代任务管理器)

  • 实时 CPU/内存:
    Get-Process | Sort-Object CPU -Descending | Select-Object -First 10 Name, CPU, WorkingSet64
  • 磁盘 I/O 和空间:
    Get-Volume | Select-Object DriveLetter, FileSystemLabel, SizeRemaining, Size

三、 网络与存储管理

1. 网络配置

无桌面版没有“网络连接”图形界面。所有操作都通过 NetAdapter 和 DnsClient 模块完成。

  • 查看网卡状态:
    Get-NetAdapter | Select-Object Name, Status, LinkSpeed
  • 配置静态 IP(示例):
    New-NetIPAddress -InterfaceAlias "Ethernet" -IPAddress "192.168.1.100" -PrefixLength 24 -DefaultGateway "192.168.1.1"
    Set-DnsClientServerAddress -InterfaceAlias "Ethernet" -ServerAddresses "8.8.8.8","114.114.114.114"
  • 测试连通性:
    Test-NetConnection -ComputerName www.google.com -Port 443

2. 存储管理(磁盘分区/格式化)

无桌面版没有磁盘管理 GUI。

  • 初始化新磁盘:
    # 假设磁盘 ID 为 2
    Initialize-Disk -Number 2
    New-Partition -DiskNumber 2 -UseMaximumSize
    Format-Volume -DriveLetter E -FileSystem NTFS -NewFileSystemLabel "Data"
  • 检查 RAID 状态(如果使用硬件 RAID,通常需用厂商工具;如果是 Software RAID,则用 Get-StoragePool 等 cmdlet)。

四、 服务与角色安装

1. 安装角色和功能

这是最关键的步骤。比如你要装 IIS 或 DHCP。

  • 列出可用角色:
    Get-WindowsFeature
  • 安装 IIS:
    Install-WindowsFeature Web-Server -IncludeManagementTools

    注意:-IncludeManagementTools 很重要,它会安装 IIS 管理控制台的基础组件,虽然还是 CLI 为主,但后续可以通过 MMC 远程加载。

2. 管理服务

# 重启 IIS
Restart-Service W3SVC

# 设置开机自启
Set-Service -Name W3SVC -StartupType Automatic

# 查看服务状态
Get-Service -Name W3SVC

五、 高级技巧:如何像有桌面一样管理?

很多新手觉得无桌面版难用,是因为他们试图在 SSH 里敲出完整的 GUI 操作。其实,真正的解法是“远程加载 MMC”。

1. 远程管理组策略 (GPO)

即使服务器无桌面,只要安装了 RSAT 工具包(在域控或管理员机上),你可以从另一台机器远程编辑这台服务器的 GPO。

2. 远程加载磁盘管理/IIS 控制台

如果你有一台带桌面的跳板机(Jump Box),安装了 RSAT:

  1. 在跳板机上打开 inetmgr (IIS Manager)。
  2. 点击“连接到服务器”,输入无桌面版 Server 2022 的 IP。
  3. 你会发现,GUI 控件实际上是在你的跳板机上渲染,但命令是在服务器上执行的。这比在 SSH 里敲命令直观得多。

3. 使用 Windows Admin Center (WAC)

这是微软官方推荐的现代管理工具。

  • 部署:在跳板机或同一内网的其他服务器上部署一个轻量级的 WAC 网关。
  • 优势:WAC 提供基于浏览器的管理界面,专门针对无桌面服务器优化。它可以管理文件共享、存储池、证书、更新、诊断等,体验非常接近原生 GUI,且完全免费。

六、 避坑指南 & 最佳实践

  1. 不要直接在 SSH 里跑长脚本:SSH 对管道和复杂 PowerShell 对象的支持有限。对于复杂任务,优先使用 Invoke-Command 或编写 .ps1 脚本并通过 Copy-Item 传输后执行。
  2. 防火墙规则:无桌面版默认防火墙较严。启用 PowerShell Remoting 时,会自动创建 WinRM 规则。启用 SSH 时,需手动放行 TCP 22。
  3. 时间同步:无桌面版容易因虚拟化迁移导致时间漂移。务必配置 NTP:
    w32tm /config /syncfromflags:manual /manualpeerlist:"pool.ntp.org" /update
    net stop w32time && net start w32time
  4. 备份配置:在执行任何网络或角色变更前,先导出当前配置:
    Export-NetFirewallRule -All > C:tempfw_backup.xml

总结

管理 Windows Server 2022 无桌面版的精髓在于:

  • 日常巡检:用 Get-* 系列 Cmdlet + Format-Table/List。
  • 配置变更:用 Install-WindowsFeature, New-NetIPAddress 等专用 Cmdlet。
  • 复杂调试:用 Invoke-Command 远程执行完整脚本。
  • 可视化需求:部署 Windows Admin Center 或从带 RSAT 的跳板机远程加载 MMC。

放弃“寻找按钮”的思维,建立“Cmdlet 思维”,你会发现无桌面版反而更高效、更稳定。