使用PowerCLI创建VMware SRM保护组时类型转换错误求助
解决思路
核心问题:New-SrmProtectionGroup的-Datastores参数要求传入VMware Datastore对象,而非字符串类型的存储名称,直接传字符串会触发类型转换错误。
具体解决步骤
- 通过数据存储名称获取对应的Datastore对象
使用PowerCLI的Get-Datastore命令,该命令支持接收单个或数组形式的存储名称,返回符合要求的Datastore类型对象。 - 将获取到的对象传入
New-SrmProtectionGroup命令
示例代码
# 定义参数 $PG_name = "some_PG_name" # 单个或多个数据存储名称,推荐用数组形式统一处理 $DatastoreNames = @('datastore1', 'datastore2') # 获取Datastore对象(确保已连接vCenter:Connect-VIServer) $Datastores = Get-Datastore -Name $DatastoreNames # 创建SRM保护组(确保已连接SRM服务器:Connect-SrmServer) New-SrmProtectionGroup -Name $PG_name -ArrayReplication -Datastores $Datastores
注意事项
- 必须先通过
Connect-VIServer连接到对应vCenter,Connect-SrmServer连接到SRM服务器,否则无法获取Datastore对象和执行SRM命令。 - 如果存储名称存在大小写差异或特殊字符,可添加
-ErrorAction Stop参数强制捕获找不到存储的错误,避免传入空对象:$Datastores = Get-Datastore -Name $DatastoreNames -ErrorAction Stop - 单个存储的场景同样适用,只需将
$DatastoreNames设为单个字符串即可。
内容的提问来源于stack exchange,提问作者LJS
相关产品推荐
相关产品推荐

