为什么将 PowerCLI 连接到 vCenter

vCenter 连接让您可以在单个会话中查看所有受管理的 ESXi 主机和集群。

直接连接到 ESXi 主机会将您的范围限制在那台机器上,因此跨主机操作如 VM 迁移、集群级查询和共享数据存储浏览都需要通过 vCenter 进行。

许多 PowerCLI 脚本 也依赖于仅在 vCenter 上运行的服务。将这些脚本指向独立的 ESXi 主机将导致某些 cmdlet 直接失败。

powercli 连接到 vcenter

如何将 PowerCLI 连接到 vCenter:6 种方法

本节涵盖连接前需要准备的条件、基本的 Connect-VIServer 语法,以及适用于不同环境和安全要求的 6 种方法。

前提条件

在连接之前,您的工作站需要安装 VMware PowerCLI 模块。在管理员 PowerShell 会话中运行以下命令,以安装到您的用户配置文件中:

powershell
Install-Module -Name VMware.PowerCLI -Scope CurrentUser

您还需要允许脚本运行的执行策略:

powershell
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope Process

最后,确认您的工作站可以通过 HTTPS 端口 443 访问 vCenter,并且您拥有有效的凭据——可以是本地 vSphere 账户或 Active Directory 域账户。

基本 Connect-VIServer 命令

最简单的语法是将您的凭据直接传递给 Connect-VIServer:

powershell
Connect-VIServer -Server "vcenter.example.com" -User "administrator@vsphere.local" -Password "yourpass"

关键参数:

  • -Server:vCenter 实例的 FQDN 或 IP 地址。
  • -User:认证使用的用户名。
  • -Password:账户密码。如果包含特殊字符,请将值用单引号括起来。
  • -Port:当您的环境使用非标准端口时覆盖默认端口。
  • -Protocol:指定 HTTP 或 HTTPS。HTTPS 是默认值。

将 PowerCLI 连接到 vCenter 的 6 种方法

PowerCLI 提供多种认证方式。请根据您的安全要求以及脚本是交互式运行还是无人值守运行来选择。

1. 用户名和密码

直接在命令中传递明文凭据是最简单的方法。适用于隔离实验室环境中的快速测试,但绝不应在生产脚本中使用。

2. PSCredential 对象

凭据对象可避免以明文形式硬编码密码。Get-Credential cmdlet 会提示输入密码并将其安全地存储在内存中:

powershell
$Credentials = Get-Credential
Connect-VIServer -Server "vcenter.example.com" -Credential $Credentials

对于交互式会话来说更安全,因为密码不会以纯文本字符串形式存储。

3. VICredentialStore

对于无人值守或计划脚本,将凭据存储在本地加密凭据存储中:

powershell
New-VICredentialStoreItem -Server "vcenter.example.com" -User "sa-automation@vsphere.local" -Password "SecurePass123"
Connect-VIServer -Server "vcenter.example.com"

在后续连接时,PowerCLI 会自动检索已保存的凭据。请注意,凭据存储是运行脚本的机器和用户账户本地的。

4. 集成(传递)认证

如果您的工作站已加入域,并且 vCenter 配置了 Active Directory 身份源,PowerCLI 可以通过 Kerberos 或 NTLM 使用您当前的 Windows 会话凭据进行认证:

powershell
Connect-VIServer -Server "vcenter.example.com"

不需要用户名或密码。请注意,这仅适用于当前登录的用户——以不同账户运行的计划任务需要使用 VICredentialStore 存储凭据。

5. 会话 ID 复用

您可以保存现有的会话 ID,并在同一脚本中传递给后续连接,以跳过重新认证:

powershell
$VIConn = Connect-VIServer -Server "vcenter.example.com" -Credential (Get-Credential)
$SavedSessionId = $VIConn.SessionId

# 在同一脚本中稍后使用:
Connect-VIServer -Server "vcenter.example.com" -Session $SavedSessionId

这对于需要在执行过程中重新连接的多步骤脚本非常有用。会话 ID 与服务器会话绑定,不能跨独立的 PowerShell 进程复用。

6. SAML / OAuth(联合身份)

使用外部身份提供商(如 AD FS、Entra ID 或 PingFederate)的环境需要基于令牌的认证。正确的流程是先获取 OAuth 安全上下文,然后将其交换为 SAML 上下文,再进行连接:

powershell
# 步骤 1:从身份提供商获取 OAuth 安全上下文
$OAuthCtx = New-OAuthSecurityContext `
    -TokenEndpointUrl "https://adfs.example.com/adfs/oauth2/token/" `
    -AuthorizationEndpointUrl "https://adfs.example.com/adfs/oauth2/authorize/" `
    -RedirectUrl "http://localhost:8844/auth" `
    -ClientId "powercli-native"

# 步骤 2:交换为 SAML 安全上下文
$SamlCtx = New-VISamlSecurityContext -VCenterServer "vcenter.example.com" -OAuthSecurityContext $OAuthCtx

# 步骤 3:使用 SAML 上下文连接
Connect-VIServer -Server "vcenter.example.com" -SamlSecurityContext $SamlCtx
注意:此流程需要在您的身份提供商中注册 OAuth 客户端。请查阅提供商文档以获取正确的端点 URL 和客户端配置。

连接到多个 vCenter

PowerCLI 支持同时连接到多个 vCenter 实例。这对于跨多个环境的报告或配置脚本非常有用。

在循环中连接服务器列表:

powershell
$vCenters = @("vcenter1.example.com", "vcenter2.example.com")
foreach ($vc in $vCenters) {
    Connect-VIServer -Server $vc -Credential (Get-Credential)
}

当多个连接处于活动状态时,PowerCLI 通过两个全局变量进行跟踪。$DefaultVIServer 引用最近连接的服务器。$DefaultVIServers 将所有活动连接作为数组保存。

默认情况下,PowerCLI 针对 $DefaultVIServer 中的单个服务器运行 cmdlet。要同时针对所有已连接的实例,请切换到多模式:

powershell
Set-PowerCLIConfiguration -DefaultVIServerMode Multiple -Confirm:$false

对于启用了增强链接模式的环境,-AllLinked 参数可通过单个命令连接到联盟中的所有 vCenter 实例:

powershell
Connect-VIServer -Server "vcenter1.example.com" -AllLinked

如何验证连接

在运行其他 cmdlet 之前,始终确认会话处于活动状态。使用以下三个命令检查当前连接状态。

查询最近连接的服务器:

powershell
$DefaultVIServer

列出当前 PowerShell 会话中的所有活动连接:

powershell
Get-VIServer

查看当前默认目标列表中的所有服务器:

powershell
$DefaultVIServers

如何在 PowerCLI 中断开与 vCenter 的连接

正确关闭活动会话是 PowerCLI 脚本规范的重要组成部分。

要断开与特定 vCenter 的连接,请使用 Disconnect-VIServer 配合 -Confirm:$false 跳过确认提示:

powershell
Disconnect-VIServer -Server "vcenter.example.com" -Confirm:$false

如果您的脚本打开了多个环境的连接,请使用通配符一次性关闭所有活动会话:

powershell
Disconnect-VIServer -Server * -Force -Confirm:$false

正确断开连接很重要,因为活动会话会继续消耗 vCenter Server 上的资源。保留孤立的连接可能会耗尽会话限制,从而暂时阻止其他管理员或脚本连接。

一些管理员手动从 $DefaultVIServers 数组中删除条目,而不是使用 cmdlet。这只会从当前 PowerShell 会话中隐藏连接——它不会终止 vCenter 上的底层 API 会话。请始终使用 Disconnect-VIServer 确保会话被完全关闭。

常见的 PowerCLI Connect-VIServer 错误及修复

以下错误涵盖了三个最常见的故障点:证书验证、Windows 身份验证和基本网络连接。

无效的服务器证书

当 vCenter 使用自签名证书,或 MACHINE_SSL 证书已被替换但您的工作站不信任时,会发生此错误。PowerCLI 默认会阻止连接。

对于实验室环境,配置 PowerCLI 忽略证书检查:

powershell
Set-PowerCLIConfiguration -InvalidCertificateAction Ignore -Confirm:$false

对于预生产环境,使用 Warn 模式允许连接同时在控制台记录警告:

powershell
Set-PowerCLIConfiguration -InvalidCertificateAction Warn -Confirm:$false

在生产环境中,请在 vCenter Server 上安装 CA 签名证书,或将 VMCA 根证书添加到管理工作站的受信任根存储中。

如果在连接到较旧 vCenter 版本或已禁用 TLS 1.0/1.1 的环境时遇到 TLS 不匹配错误,请在连接前强制 PowerShell 协商 TLS 1.2:

powershell
[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.SecurityProtocolType]::Tls12
Connect-VIServer -Server "vcenter.example.com" ...
注意:此设置仅适用于当前 PowerShell 会话。请将其添加到针对具有严格 TLS 配置环境的所有脚本顶部。

集成身份验证不起作用

要使集成 Windows 身份验证正常工作,vCenter 需要在 SSO 设置中配置 Active Directory 身份源。在尝试传递身份验证之前请验证此项。

通过 Windows 任务计划程序运行的脚本如果任务在本地系统账户下运行而非具有 vCenter 访问权限的域账户,则会在此处失败。检查计划任务使用的账户上下文。

当集成身份验证对于无人值守脚本不实用时,请将加密凭据存储在 VICredentialStore 中:

powershell
New-VICredentialStoreItem -Server "vcenter.example.com" -User "domain\sa-automation" -Password "SecurePassword"

完全无法连接到 vCenter

首先检查您的防火墙是否允许端口 443 上的出站 HTTPS 流量到达 vCenter Server。

验证您的 -Server 值使用正确的 FQDN 或 IP。对于 IPv6 地址,请将地址括在方括号中:

powershell
Connect-VIServer -Server "[fe80::20c:29ff:fe00:1122]"

如果您的密码包含特殊字符(如 $),请将整个字符串用单引号括起来,以防止 PowerShell 对其进行求值:

powershell
Connect-VIServer -Server "vcenter.example.com" -User "administrator@vsphere.local" -Password 'P@$$word!'

如果系统代理设置将 PowerCLI 流量路由到内部子网之外,请通过以下方式绕过:

powershell
Set-PowerCLIConfiguration -ProxyPolicy NoProxy -Confirm:$false

i2Backup 如何扩展 PowerCLI 驱动的 vCenter 管理

PowerCLI 让您能够控制您的 vCenter 环境——但仅靠自动化并不能保护它。当 VM 被删除、主机发生故障或配置更改出错时,您需要一个独立于脚本管道运行的恢复层。

i2Backup 为 VMware 环境填补了这一角色。

i2Backup 关键功能:

  • 无代理 VM 备份: i2Backup 使用原生 VMware API 备份虚拟机,无需在每个客户机内安装代理。备份作业期间对生产零影响,兼容 VMware、Hyper-V 及其他主流虚拟化平台。
  • 即时 VM 恢复: 在主机故障时,i2Backup 可以将 VM 备份直接挂载到目标平台,以最小的停机时间使工作负载恢复在线。
  • 灵活的恢复选项: 无需恢复整个 VM 即可恢复单个文件、文件夹或数据库条目。时间点恢复让您可以使用持续备份日志回滚到特定时刻。
  • 灵活的存储目标: 备份数据可以写入本地磁盘、NAS、磁带库、对象存储或重复数据删除存储——包括兼容 S3 的云目标。
  • 集中管理与告警: 基于 Web 的控制台提供备份任务状态的实时可见性,并通过邮件和短信告警让您的团队无需手动检查即可了解情况。

对于需要超越备份功能的环境——例如生产和灾备站点之间的实时复制——i2Availability 提供应用级高可用性和自动故障切换。对于数据库复制和跨平台数据同步,i2Stream 处理异构数据库环境中的实时复制。

结论

将 PowerCLI 连接到 vCenter 几乎是任何 vSphere 自动化任务的起点。一旦会话建立——无论是通过凭据对象、VICredentialStore 还是联合身份提供商——您都可以集中访问环境中的每个主机、集群和数据存储。

本指南涵盖的方法和修复方案解决了最常见的障碍:证书错误、认证失败和网络级阻止。通过正确断开连接来保持会话清洁,并理解 $DefaultVIServers 在多个连接中的行为方式,将在脚本表现异常时节省时间。

通过 PowerCLI 管理 vCenter 为您提供了操作控制,但它不能替代专用的保护层。将您的自动化工作流与英方软件的 i2Backup 相结合,可确保您所管理的 VM 和工作负载在出现问题时始终可恢复。

博客分类底部

准备好构建企业数据韧性了吗?

立即开启 60 天免费试用,或预约产品演示,了解英方软件如何为您的核心业务提供「零中断、零丢失」的数据保护。

请先完成图形验证

验  证  码:

英方官网验证码
第三方二维码 第三方二维码
英方公告铃铛图标
英方公告铃铛图标

公告

英方侧边栏向右箭头
英方高亮提示圆点
英方软件公告
各位求职者、合作伙伴:
近期有第三方冒用英方名义发布虚假招聘、不实业务信息。我司正规招聘全程零收费,非官网渠道信息均不作数。
信息核验热线:400-0078-655
遇诈骗请保留证据,及时联系我们并报警
英方软件
2026 年 6 月 23 日
英方邮件咨询图标
英方邮件咨询图标

邮件

英方销售支持图标
英方销售支持图标

销售

英方侧边栏向右箭头
联系销售:400-0078-655 转 1