备份与恢复测试:IT 团队的实用指南
2026-08-12
2026-08-12
2026-08-07
2026-08-04
vCenter 连接让您可以在单个会话中查看所有受管理的 ESXi 主机和集群。
直接连接到 ESXi 主机会将您的范围限制在那台机器上,因此跨主机操作如 VM 迁移、集群级查询和共享数据存储浏览都需要通过 vCenter 进行。
许多 PowerCLI 脚本 也依赖于仅在 vCenter 上运行的服务。将这些脚本指向独立的 ESXi 主机将导致某些 cmdlet 直接失败。

本节涵盖连接前需要准备的条件、基本的 Connect-VIServer 语法,以及适用于不同环境和安全要求的 6 种方法。
在连接之前,您的工作站需要安装 VMware PowerCLI 模块。在管理员 PowerShell 会话中运行以下命令,以安装到您的用户配置文件中:
Install-Module -Name VMware.PowerCLI -Scope CurrentUser
您还需要允许脚本运行的执行策略:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope Process
最后,确认您的工作站可以通过 HTTPS 端口 443 访问 vCenter,并且您拥有有效的凭据——可以是本地 vSphere 账户或 Active Directory 域账户。
最简单的语法是将您的凭据直接传递给 Connect-VIServer:
Connect-VIServer -Server "vcenter.example.com" -User "administrator@vsphere.local" -Password "yourpass"
关键参数:
-Server:vCenter 实例的 FQDN 或 IP 地址。-User:认证使用的用户名。-Password:账户密码。如果包含特殊字符,请将值用单引号括起来。-Port:当您的环境使用非标准端口时覆盖默认端口。-Protocol:指定 HTTP 或 HTTPS。HTTPS 是默认值。PowerCLI 提供多种认证方式。请根据您的安全要求以及脚本是交互式运行还是无人值守运行来选择。
1. 用户名和密码
直接在命令中传递明文凭据是最简单的方法。适用于隔离实验室环境中的快速测试,但绝不应在生产脚本中使用。
2. PSCredential 对象
凭据对象可避免以明文形式硬编码密码。Get-Credential cmdlet 会提示输入密码并将其安全地存储在内存中:
$Credentials = Get-Credential
Connect-VIServer -Server "vcenter.example.com" -Credential $Credentials
对于交互式会话来说更安全,因为密码不会以纯文本字符串形式存储。
3. VICredentialStore
对于无人值守或计划脚本,将凭据存储在本地加密凭据存储中:
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 会话凭据进行认证:
Connect-VIServer -Server "vcenter.example.com"
不需要用户名或密码。请注意,这仅适用于当前登录的用户——以不同账户运行的计划任务需要使用 VICredentialStore 存储凭据。
5. 会话 ID 复用
您可以保存现有的会话 ID,并在同一脚本中传递给后续连接,以跳过重新认证:
$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 上下文,再进行连接:
# 步骤 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
PowerCLI 支持同时连接到多个 vCenter 实例。这对于跨多个环境的报告或配置脚本非常有用。
在循环中连接服务器列表:
$vCenters = @("vcenter1.example.com", "vcenter2.example.com")
foreach ($vc in $vCenters) {
Connect-VIServer -Server $vc -Credential (Get-Credential)
}
当多个连接处于活动状态时,PowerCLI 通过两个全局变量进行跟踪。$DefaultVIServer 引用最近连接的服务器。$DefaultVIServers 将所有活动连接作为数组保存。
默认情况下,PowerCLI 针对 $DefaultVIServer 中的单个服务器运行 cmdlet。要同时针对所有已连接的实例,请切换到多模式:
Set-PowerCLIConfiguration -DefaultVIServerMode Multiple -Confirm:$false
对于启用了增强链接模式的环境,-AllLinked 参数可通过单个命令连接到联盟中的所有 vCenter 实例:
Connect-VIServer -Server "vcenter1.example.com" -AllLinked
在运行其他 cmdlet 之前,始终确认会话处于活动状态。使用以下三个命令检查当前连接状态。
查询最近连接的服务器:
$DefaultVIServer
列出当前 PowerShell 会话中的所有活动连接:
Get-VIServer
查看当前默认目标列表中的所有服务器:
$DefaultVIServers
正确关闭活动会话是 PowerCLI 脚本规范的重要组成部分。
要断开与特定 vCenter 的连接,请使用 Disconnect-VIServer 配合 -Confirm:$false 跳过确认提示:
Disconnect-VIServer -Server "vcenter.example.com" -Confirm:$false
如果您的脚本打开了多个环境的连接,请使用通配符一次性关闭所有活动会话:
Disconnect-VIServer -Server * -Force -Confirm:$false
正确断开连接很重要,因为活动会话会继续消耗 vCenter Server 上的资源。保留孤立的连接可能会耗尽会话限制,从而暂时阻止其他管理员或脚本连接。
一些管理员手动从 $DefaultVIServers 数组中删除条目,而不是使用 cmdlet。这只会从当前 PowerShell 会话中隐藏连接——它不会终止 vCenter 上的底层 API 会话。请始终使用 Disconnect-VIServer 确保会话被完全关闭。
以下错误涵盖了三个最常见的故障点:证书验证、Windows 身份验证和基本网络连接。
当 vCenter 使用自签名证书,或 MACHINE_SSL 证书已被替换但您的工作站不信任时,会发生此错误。PowerCLI 默认会阻止连接。
对于实验室环境,配置 PowerCLI 忽略证书检查:
Set-PowerCLIConfiguration -InvalidCertificateAction Ignore -Confirm:$false
对于预生产环境,使用 Warn 模式允许连接同时在控制台记录警告:
Set-PowerCLIConfiguration -InvalidCertificateAction Warn -Confirm:$false
在生产环境中,请在 vCenter Server 上安装 CA 签名证书,或将 VMCA 根证书添加到管理工作站的受信任根存储中。
如果在连接到较旧 vCenter 版本或已禁用 TLS 1.0/1.1 的环境时遇到 TLS 不匹配错误,请在连接前强制 PowerShell 协商 TLS 1.2:
[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.SecurityProtocolType]::Tls12
Connect-VIServer -Server "vcenter.example.com" ...
要使集成 Windows 身份验证正常工作,vCenter 需要在 SSO 设置中配置 Active Directory 身份源。在尝试传递身份验证之前请验证此项。
通过 Windows 任务计划程序运行的脚本如果任务在本地系统账户下运行而非具有 vCenter 访问权限的域账户,则会在此处失败。检查计划任务使用的账户上下文。
当集成身份验证对于无人值守脚本不实用时,请将加密凭据存储在 VICredentialStore 中:
New-VICredentialStoreItem -Server "vcenter.example.com" -User "domain\sa-automation" -Password "SecurePassword"
首先检查您的防火墙是否允许端口 443 上的出站 HTTPS 流量到达 vCenter Server。
验证您的 -Server 值使用正确的 FQDN 或 IP。对于 IPv6 地址,请将地址括在方括号中:
Connect-VIServer -Server "[fe80::20c:29ff:fe00:1122]"
如果您的密码包含特殊字符(如 $),请将整个字符串用单引号括起来,以防止 PowerShell 对其进行求值:
Connect-VIServer -Server "vcenter.example.com" -User "administrator@vsphere.local" -Password 'P@$$word!'
如果系统代理设置将 PowerCLI 流量路由到内部子网之外,请通过以下方式绕过:
Set-PowerCLIConfiguration -ProxyPolicy NoProxy -Confirm:$false
PowerCLI 让您能够控制您的 vCenter 环境——但仅靠自动化并不能保护它。当 VM 被删除、主机发生故障或配置更改出错时,您需要一个独立于脚本管道运行的恢复层。
i2Backup 为 VMware 环境填补了这一角色。
对于需要超越备份功能的环境——例如生产和灾备站点之间的实时复制——i2Availability 提供应用级高可用性和自动故障切换。对于数据库复制和跨平台数据同步,i2Stream 处理异构数据库环境中的实时复制。
将 PowerCLI 连接到 vCenter 几乎是任何 vSphere 自动化任务的起点。一旦会话建立——无论是通过凭据对象、VICredentialStore 还是联合身份提供商——您都可以集中访问环境中的每个主机、集群和数据存储。
本指南涵盖的方法和修复方案解决了最常见的障碍:证书错误、认证失败和网络级阻止。通过正确断开连接来保持会话清洁,并理解 $DefaultVIServers 在多个连接中的行为方式,将在脚本表现异常时节省时间。
通过 PowerCLI 管理 vCenter 为您提供了操作控制,但它不能替代专用的保护层。将您的自动化工作流与英方软件的 i2Backup 相结合,可确保您所管理的 VM 和工作负载在出现问题时始终可恢复。
公告
邮件
销售