我的数组有什么问题?
What is wrong with my array?
我不知道我需要修复什么才能让脚本到达 运行。
代码:
$clusterNodeNames = (Get-ClusterNode -Cluster Clu05).Name
$AllVMsInCluster = Get-VM -ComputerName $clusterNodeNames
$AllVMs = $AllVMsInCluster | Select -ExpandProperty Name
$AllVMsInCluster[1] | Set-VM -SnapshotFileLocation C:\ClusterStorage\Volume1$AllVMs[1]
我正在创建两个数组
$AllVMsInCluster
$AllVMs
输出:
PS C:\Windows\system32> $AllVMsInCluster[1]
Name State CPUUsage(%) MemoryAssigned(M) Uptime Status Version
---- ----- ----------- ----------------- ------ ------ -------
acd-pv06 Saved 0 0 00:00:00 Operating normally 8.0
PS C:\Windows\system32> $AllVMs[1]
acd-pv06
我的最终目标是将最后一行放在一个循环中,但最后我一直在获取整个数组。
当我 运行 最后一行时,它将仅更改 acd-pv06 的 SnapshotFileLocation,但输出如下所示:
C:\ClusterStorage\Volume1\acd-pv02 acd-pv06 acd-SQL01-ag acd-SQL02-ag[1]
我怎样才能让它看起来像:
C:\ClusterStorage\Volume1\acd-pv06\
您不需要两个数组。在 $AllVMsInCluster
数组的对象中,您已经可以使用 .Name
属性。直接在循环或管道中使用它。将 object.property 包裹在子表达式 $()
中以确保正确的变量扩展。
$AllVmsInCluster |
ForEach-Object {
Write-Host "Changing snapshot file location for $($_.Name)."
Set-VM -VM $_ -SnapshotFileLocation "C:\ClusterStorage\Volume1$($_.Name)" -WhatIf
}
当您准备好真正执行更改时,请删除 -WhatIf
。
我不知道我需要修复什么才能让脚本到达 运行。
代码:
$clusterNodeNames = (Get-ClusterNode -Cluster Clu05).Name
$AllVMsInCluster = Get-VM -ComputerName $clusterNodeNames
$AllVMs = $AllVMsInCluster | Select -ExpandProperty Name
$AllVMsInCluster[1] | Set-VM -SnapshotFileLocation C:\ClusterStorage\Volume1$AllVMs[1]
我正在创建两个数组
$AllVMsInCluster
$AllVMs
输出:
PS C:\Windows\system32> $AllVMsInCluster[1]
Name State CPUUsage(%) MemoryAssigned(M) Uptime Status Version
---- ----- ----------- ----------------- ------ ------ -------
acd-pv06 Saved 0 0 00:00:00 Operating normally 8.0
PS C:\Windows\system32> $AllVMs[1]
acd-pv06
我的最终目标是将最后一行放在一个循环中,但最后我一直在获取整个数组。
当我 运行 最后一行时,它将仅更改 acd-pv06 的 SnapshotFileLocation,但输出如下所示:
C:\ClusterStorage\Volume1\acd-pv02 acd-pv06 acd-SQL01-ag acd-SQL02-ag[1]
我怎样才能让它看起来像:
C:\ClusterStorage\Volume1\acd-pv06\
您不需要两个数组。在 $AllVMsInCluster
数组的对象中,您已经可以使用 .Name
属性。直接在循环或管道中使用它。将 object.property 包裹在子表达式 $()
中以确保正确的变量扩展。
$AllVmsInCluster |
ForEach-Object {
Write-Host "Changing snapshot file location for $($_.Name)."
Set-VM -VM $_ -SnapshotFileLocation "C:\ClusterStorage\Volume1$($_.Name)" -WhatIf
}
当您准备好真正执行更改时,请删除 -WhatIf
。