sergey vasin

The IT blog

Используем PowerShell для конфигурирования сетевых адаптеров в Windows Server 2012 – Hey, Scripting Guy! Blog

leave a comment »

Резюме: Приглашенный блогер Microsoft MVP Jan Egil Ring рассказывает о том, как автоматически сконфигурировать сетевые адаптеры в Windows Server 2012 посредством Windows PowerShell 3.0.

Ознакомиться с предыдущим постом Jan Egil Ring вы можете здесь.

С выпуском Windows Server 2012, Microsoft представила встроенную поддержку Windows PowerShell для задач настройки сетевых адаптеров. Полный обзор командлетов для сетевых служб вы можете найти в библиотеке TechNet.

Обычный сценарий использования – это настройка свойств TCP/IP, для чего мы воспользуемся командлетами Net TCP/IP, которые доступны в модуле NetAdapter.

Импортируем модуль NetAdapter. Этот шаг указан для ясности. На самом деле он не обязателен благодаря функции автозагрузки модулей в Windows PowerShell 3.0.

Import-Module NetAdapter

Получаем сетевой адаптер, который нужно сконфигурировать

$netadapter = Get-NetAdapter -Name Ethernet

Отключаем DHCP

$netadapter | Set-NetIPInterface -DHCP Disabled

Указываем IP-адрес и шлюз по умолчанию

$netadapter | New-NetIPAddress -AddressFamily IPv4 -IPAddress 10.0.1.100 -PrefixLength 24 -Type Unicast -DefaultGateway 10.0.1.1

Настраиваем адрес DNS-сервера

Set-DnsClientServerAddress -InterfaceAlias Ethernet -ServerAddresses 10.0.1.10

Для справки, равнозначная команда в network shell (netsh) следующая:

netsh interface ip set address name=»Ethernet» static 10.0.1.100 255.255.255.0 10.0.1.1 1

netsh interface ip set dns «Ethernet» static 10.0.1.10

Более продвинутый сценарий использования – это настройка свойств TCP/IP на компьютерах с несколькими сетевыми адаптерами. Один из примеров – это узлы кластера Hyper-V, который могут обладать следующими сетевыми адаптерами:

Management – Используется для удаленного управления, доменного трафика, агентов управления и т.д.

Heartbeat – Выделенный адаптер для пульса в failover clustering.

CSV – Выделенный адаптер для траффика Cluster Shared Volume.

Live Migration – Выделенный адаптер для живой миграции виртуальных машин между хостами.

Virtual switch – Выделенный адаптер для внешнего виртуального свитча Hyper-V, обычно подключаемого к транковому порту коммутатора.

Число сетевых адаптеров может различаться в зависимости от числа виртуальных свитчей и использования NIC Teaming. В нашем примере мы сконфигурируем хост Hyper-V, содержащий 5 сетевых адаптеров.

Конфигурирование настроек TCP/IP и имен для адаптеров в подобном сценарии может стать довольно долгим делом, так как вам нужно будет выяснить, к какой VLAN и к какому порту свитча подключен каждый сетевой адаптер. Один из способов облегчить задачу – это создание CSV-файла, содержащего необходимую информацию, используя, например, Microsoft Excel. CSV-файл может содержать конфигурационную информацию для сетевых адаптеров одного или нескольких серверов. Вот примерный CSV-файл:

«Computername»,»NIC»,»MAC»,DHCP,AddressFamily,IPAddress,PrefixLength,Type,DefaultGateway,DnsServerAddresses

«HPV10001″,»Server_Management»,»00-25-B5-01-00-7F»,»false»,»IPv4″,»10.10.10.100″,»23″,»Unicast»,»10.10.10.1″,»10.10.10.100,10.10.10.101″

«HPV10001″,»Hyper-V_VMSwitch_Trunk»,»00-25-B5-01-00-6F»,»true»,,,,,,

«HPV10001″,»FailoverCluster_Heartbeat»,»00-25-B5-01-00-EF»,»false»,»IPv4″,»172.30.3.161″,»24″,,

«HPV10001″,»FailoverCluster_CSV»,»00-25-B5-01-00-DF»,»false»,»IPv4″,»172.30.2.161″,»24″,,

«HPV10001″,»Hyper-V_LiveMigration»,»00-25-B5-01-00-FF»,»false»,»IPv4″,»172.30.1.161″,»24″,,

Теперь вы можете воспользоваться командлетами модуля NetAdapter для автоматической конфигурации настроек на хосте Hyper-V.

Импортируем CSV-файл, содержащий конфигурационную информацию

$NICs = Import-Csv «c:\temp\nic-config.csv» | Where-Object {$_.computername -eq $env:COMPUTERNAME}

foreach ($NIC in $NICs) {

$NetAdapter = Get-NetAdapter | Where-Object {$_.MacAddress -eq $NIC.MAC}

if ($NetAdapter) {

Write-Verbose «Found NIC $($NIC.NIC)»

Получаем сетевой адаптер, который нужно сконфигурировать

$NetAdapter = $NetAdapter | Rename-NetAdapter -NewName $NIC.NIC –PassThru

Если в CSV-файле DHCP установлен в False, задаем статический IP-адрес

if ($NIC.DHCP -eq ‘false’) {

Write-Verbose «Configuring TCP/IP settings for NIC $($NIC.NIC)»

$NetAdapter = $NetAdapter | Set-NetIPInterface -DHCP Disabled –PassThru

Инициализируем пустую хеш-таблицу для хранения конфигурации сетевого адаптера

$NICAttributes = @{}

Добавляем свойства конфигурации в хеш-таблицу

if ($NIC.AddressFamily) {

$NICAttributes.Add(‘AddressFamily’,$NIC.AddressFamily)

}

if ($NIC.IPAddress) {

$NICAttributes.Add(‘IPAddress’,$NIC.IPAddress)

}

if ($NIC.PrefixLength) {

$NICAttributes.Add(‘PrefixLength’,$NIC.PrefixLength)

}

if ($NIC.Type) {

$NICAttributes.Add(‘Type’,$NIC.Type)

}

if ($NIC.DefaultGateway) {

$NICAttributes.Add(‘DefaultGateway’,$NIC.DefaultGateway)

}

Конфигурируем IP-настройки, используя splatting

$NetAdapter | New-NetIPAddress @NICAttributes

Настраиваем адреса DNS-серверов, если они указаны в CSV-файле

if ($NIC.DnsServerAddresses) {

Set-DnsClientServerAddress -InterfaceAlias $($NIC.NIC) -ServerAddresses $NIC.DnsServerAddresses

}

}

}

}

Заметка: Назначение этого примера – это представить возможный сценарий использования. В промышленной среде вы скорее всего решите расширить функциональность скрипта, добавив такие вещи, как обработку ошибок и журналирование.

Хотя скрипт автоматизирует фазу конфигурации, вам все еще нужно вручную получить MAC-адреса каждого адаптера. Если поставщик аппаратного обеспечения поддерживает какой-либо вид автоматизации, вы сможете собрать эту информацию автоматически. Один из примеров – это Cisco Unified Computing System (UCS), который предоставляет модуль Windows PowerShell для автоматизации каждого аспекта, касающегося серверного оборудования. Для дополнительной информации, ознакомьтесь со статьей Getting started with Cisco UCS PowerShell Toolkit в моем блоге.

Далее представлен пример скрипта, который генерирует CSV-файл, содержащий имя сервера, имя сетевого адаптера и MAC-адреса для всех серверов Hyper-V в системе Cisco UCS:

Импортируем модуль Cisco UCS (UCS PowerTool)

Import-Module CiscoUcsPS

Connect-Ucs -Name 10.10.10.50 -Credential (Get-Credential)

$output = @()

$path = «c:\temp\nic-config.csv»

$serverprofiles = Get-UcsServiceProfile | Where-Object {$_.name -like «*hpv*»}

foreach ($server in $serverprofiles) {

$VNICs = Get-UcsVnic -ServiceProfile $($server.name)

foreach ($VNIC in $VNICs) {

Заметка: Транковый интерфейс содержит несколько обектов VnicInterface.

Так как все они будут обладать одним и тем же адресом, мы получим только первый из них

$VnicInterface = $VNIC | Get-UcsVnicInterface | Select-Object -First 1

$output += New-Object -TypeName pscustomobject -Property @{

Computername = $($server.name)

NIC = $VnicInterface.Name

MACAddress = $VnicInterface.Addr

VLAN = $VnicInterface.Vnet

}

}

}

$output | Select-Object Computername,NIC,VLAN,MAC,DHCP,AddressFamily,IPAddress,PrefixLength,Type,DefaultGateway,DnsServerAddresses | Export-Csv -Path $path -NoTypeInformation

Заметка: Я также добавил несколько свойств, которые не присутствовали в pscustomobject. Это сделано для того, чтобы CSV-файл содержал все свойства, которые вы сможете позже отредактировать для использования со скриптом конфигурации сетевых адаптеров.

Summary

В этом посте мы рассмотрели основные возможности одного из модулей для работы с сетевыми службами в Windows Server 2012, а также сценарий его использования вкупе со сторонним модулем Windows PowerShell. Одни из преимуществ по сравнению с ранее использовавшимися утилитами командной строки, такими как netsh.exe – это возможности исследования и объектная модель Windows PowerShell. Например, мы можем воспользоваться такими командлетами, как Get-Command, Show-Command, Get-Help, и Get-Member для определения того, чем мы можем воспользоваться, а также стандартными командлетами *-Object для манипуляции данными.

Дополнительные ресурсы

Using PowerShell for NIC Configuration Tasks

Use PowerShell 3.0 to Work with Network Adapters

Hyper-V Cmdlets in Windows PowerShell

Windows PowerShell Support for Windows Server 2012

Автор:

Ed Wilson, Microsoft Scripting Guy

Оригинал:

http://blogs.technet.com/b/heyscriptingguy/archive/2012/11/21/use-powershell-to-configure-the-nic-on-windows-server-2012.aspx


Страницы в социальных сетях:

Twitter: https://twitter.com/vsseth
Facebook: https://fb.com/inpowershell
VKontakte: https://vk.com/inpowershell


Реклама

Written by Сергей Васин

Декабрь 3, 2012 в 15:54

Опубликовано в HeyScriptingGuyBlog, PowerShell

Tagged with

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s