You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell多vCenter连接脚本执行New-TagAssignment报错求助

问题

编写了一个需连接两台vCenter的PowerShell脚本,开头配置如下:

Set-PowerCLIConfiguration -DefaultVIServerMode Multiple -Confirm:$false

Connect-VIServer -Server Vcenter1 -User XXXX -Password XXX

Connect-VIServer -Server Vcenter2 -User XXXX  -Password XXXX 

脚本包含如下判断逻辑:

if(在Vcenter1中找到元素){
Get-VM my_VM| New-TagAssignment -Tag XXXX -Server Vcenter1

}

elseif(在Vcenter2中找到元素){
 Get-VM my_VM| New-TagAssignment -Tag XXXX -Server Vcenter2
}

执行脚本时返回错误:

New-TagAssignment 
The TagCisImp - 'my_tag' must be managed by the same VC Server that you are using to invoke this operation

已设置ServerMode为Multiple且指定了-Server参数,但仍出现该错误,请问脚本存在什么问题?

分析与解决

核心问题是**Get-VM未指定-Server参数**,导致获取的VM对象可能来自非目标vCenter实例。即使New-TagAssignment指定了-Server,如果VM对象所属的vCenter与Tag的管理vCenter不一致,就会触发该错误。

在多vCenter连接模式下,所有与vCenter交互的cmdlet都必须明确指定-Server参数,确保操作的对象和目标vCenter强绑定。修正后的脚本如下:

if(在Vcenter1中找到元素){
    # 明确指定从Vcenter1获取VM对象
    Get-VM my_VM -Server Vcenter1 | New-TagAssignment -Tag XXXX -Server Vcenter1
}
elseif(在Vcenter2中找到元素){
    # 明确指定从Vcenter2获取VM对象
    Get-VM my_VM -Server Vcenter2 | New-TagAssignment -Tag XXXX -Server Vcenter2
}

另外需要注意:-Tag参数对应的标签必须存在于指定的-Server对应的vCenter中,否则也会引发类似的跨vCenter不匹配错误。

内容的提问来源于stack exchange,提问作者Morph59

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 14:22:01