0
我有一段脚本来做一些虚拟机上的东西。这里是:像在Where-Object无法在PowerShell 2中工作
$powered = Get-VM VM-TEST4-* | Where-Object { $_.PowerState -eq 'PoweredOn'
ForEach-Object -InputObject $powered { Shutdown-VMGuest -VM $_ }
# taking snapshots etc etc
# BELOW FAILS
# start up machines in order
Where-Object -Like -Property Name -InputObject $powered -Value "VM-TEST4-DB*" | ForEach-Object { if ($_ -ne $null) { Start-VM -VM $_ } }
sleep -Seconds 180
Where-Object -Like -Property Name -InputObject $powered -Value "VM-TEST4-AUX*" | ForEach-Object { if ($_ -ne $null) { Start-VM -VM $_ } }
sleep -Seconds 180
Where-Object -Like -Property Name -InputObject $powered -Value "VM-TEST4-WEB*" | ForEach-Object { if ($_ -ne $null) { Start-VM -VM $_ } }
sleep -Seconds 180
我这个代码的问题是没有开始,我只等。现在它的想法是过滤出正确的服务器类型,以便DB早于AUX和WEB启动,而$_ -ne $null
检查可以保护我,如果Where-Object
没有返回结果(我们有没有AUX服务器的环境)。
任何想法如何使其正常工作?
'-Like'是在3.0中引入的[technet](http://technet.microsoft.com/zh-cn/library/hh849715.aspx ) – Matt 2014-09-26 15:31:01
任何替代品?然后我不知道为什么它不会出错。它只是没有做什么 – Migol 2014-09-26 15:35:10
'$ powered | Where-Object {名称 - 如“VM-TEST4-WEB *”}。我确定'-match'也可以在没有星号的情况下工作 – Matt 2014-09-26 15:43:13