![]() |
Как добавить исключение в foreach
Всем привет!
На Hyper-V хосте есть несколько десятков машин имена которых наичнаются на "HYPER - VMX" и "HYPER-DCX" (разница в пробеле между дефисом). Для тех что именуются как "HYPER - VMX" нужно прописать расширенные ACL'ы вида: Add-VMNetworkAdapterAcl -VMName "HYPER - VM1" -Direction Both -RemoteIPAddress 172.28.0.0/16 -Action Deny -Weight 1 Add-VMNetworkAdapterAcl -VMName "HYPER - VM1" -RemoteIPAddress 172.28.0.1 -Direction Both -Action Allow -Weight 2 Подскажите пожалуйста можно ли создать скрипт, который: - Будет обрабатывать только те виртуальные машины, которые именуются по типу "HYPER - VMX" и не будет обрабатывать те, которые именуются по типу "HYPER-DCX". - Позволит исключить из обработки несколько виртуальных машин которые именуются по типу "HYPER - VMX" - Позволит применить ACL правила. Как я понимаю скрип должен начинаться как то так: $VMlist = Get-VM (foreach $VM in $VMList) { Add-VMNetworkAdapterAcl -VMName "HYPER - VM1" -Direction Both -RemoteIPAddress 172.28.0.0/16 -Action Deny -Weight 1 Add-VMNetworkAdapterAcl -VMName "HYPER - VM1" -RemoteIPAddress 172.28.0.1 -Direction Both -Action Allow -Weight 2 } Но как это скомпоновать вместе я не совсем понимаю. Помогите пожалуйста. |
Код:
$VMlist = Get-VM |
Это плохой подход.
Лучше выборку отделять от операций и написать примерно так: $VMlist = Get-VM | Where-Object Name -match '^HYPER - VMX' |
Ребят сделал так. Сначала с каждого гипервизора вытащил список машин и оставил в файле только те которые нужны.
Get-VM -ComputerName HV1 | Select-Object {$_.Name} | Out-File C:\VM1VM.txt Далее вот так: $VMlist = Get-Content C:\HV1VM.txt foreach ($VM in $VMList) { Add-VMNetworkAdapterAcl -Direction Both -RemoteIPAddress 172.28.0.0/16 -Action Deny Add-VMNetworkAdapterAcl -Direction Both -RemoteIPAddress 172.28.0.1 -Action Allow } Но в таком виде выйдет что-то типа: Supply values for the following parameters: VMName[0]: Так как параметр -VMName (который является обязательным) в обеих строках пропущен. Подскажите пожалуйста как список машин из файла HV1VM втиснуть внутрь цикла foreach. |
Время: 15:59. |
Время: 15:59.
© OSzone.net 2001-