|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - Как добавить исключение в foreach |
|
PowerShell - Как добавить исключение в foreach
|
Новый участник Сообщения: 6 |
Всем привет!
На 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 } Но как это скомпоновать вместе я не совсем понимаю. Помогите пожалуйста. |
|
------- Отправлено: 01:22, 29-12-2017 |
Ветеран Сообщения: 1259
|
Профиль | Отправить PM | Цитировать $VMlist = Get-VM $VMToExclude = "HYPER - VM100","HYPER - VM200" foreach ($VM in $VMList) { if($VM.VMName -match "HYPER\s?-\s?VM\d+" -and !($VMToExclude -contains $VM.VMName)) { Add-VMNetworkAdapterAcl -VMName $VM.VMName -Direction Both -RemoteIPAddress 172.28.0.0/16 -Action Deny -Weight 1 Add-VMNetworkAdapterAcl -VMName $VM.VMName -RemoteIPAddress 172.28.0.1 -Direction Both -Action Allow -Weight 2 } } |
Отправлено: 08:51, 29-12-2017 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 3806
|
Профиль | Отправить PM | Цитировать Это плохой подход.
Лучше выборку отделять от операций и написать примерно так: $VMlist = Get-VM | Where-Object Name -match '^HYPER - VMX' |
Отправлено: 10:28, 29-12-2017 | #3 |
Новый участник Сообщения: 6
|
Профиль | Отправить PM | Цитировать Ребят сделал так. Сначала с каждого гипервизора вытащил список машин и оставил в файле только те которые нужны.
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. |
------- Отправлено: 06:21, 02-01-2018 | #4 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
PowerShell - ForEach и ForEach-Object начать с конца (наоборот)... | Buddha.g | Скриптовые языки администрирования Windows | 2 | 12-10-2016 03:10 | |
Разное - Исключение неизвестное программное исключение (0x0eedfade)... | Inokentych | Microsoft Windows 7 | 5 | 18-05-2016 10:53 | |
Norton Internet Security - как добавить в исключение | Maestro | Хочу все знать | 2 | 04-02-2014 14:14 | |
Ошибка - explorer.exe Исключение неизвестное программное исключение -Windows XP | Igorilla000 | Microsoft Windows 2000/XP | 3 | 31-03-2013 13:56 | |
Брандмауер... Добавить исключение. | exo | Microsoft Windows NT/2000/2003 | 9 | 16-07-2008 13:50 |
|