Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - Как добавить исключение в foreach

Ответить
Настройки темы
PowerShell - Как добавить исключение в foreach

Аватара для Nightwolf_82

Новый участник


Сообщения: 6
Благодарности: 0

Профиль | Отправить PM | Цитировать


Всем привет!

На 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
}

Но как это скомпоновать вместе я не совсем понимаю.

Помогите пожалуйста.

-------
Спасибо, Nightwolf_82!


Отправлено: 01:22, 29-12-2017

 

Ветеран


Сообщения: 1259
Благодарности: 861

Профиль | Отправить 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
Благодарности: 824

Профиль | Отправить PM | Цитировать


Это плохой подход.
Лучше выборку отделять от операций и написать примерно так:

$VMlist = Get-VM | Where-Object Name -match '^HYPER - VMX'
Это сообщение посчитали полезным следующие участники:

Отправлено: 10:28, 29-12-2017 | #3


Аватара для Nightwolf_82

Новый участник


Сообщения: 6
Благодарности: 0

Профиль | Отправить 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.

-------
Спасибо, Nightwolf_82!


Отправлено: 06:21, 02-01-2018 | #4



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - Как добавить исключение в foreach

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
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




 
Переход