PowerShellによるネットワーク構成の初期化
今回はPowerShellを使ってネットワーク構成を初期化する方法を見てみましょう.例えば、IPアドレスの設定、サブネットマスクの設定など、まず説明しなければならないのは、今回は実験的なシナリオであり、特定の生産環境でテストを行ったことがなく、いくつかのものをテストするために書いただけなので、自分でテストする必要があります.主な目的はやはりPowershellのネットに関する機能を試してみたいです.一般的にIPアドレスなどの情報を設定するにはWMIを使って完成することが多いですが、今回は特にPowershellの文を使って実現できるかどうか試してみたいので、この簡単なスクリプトがありました
下のコードを見ると、このスクリプトには簡単な検証機能があります.IPアドレスではなく、アルファベット記号などが含まれている場合、このスクリプトにもエラーメッセージが表示されます.この機能は主に正規表現で実現されています.
PowerShellでネットワークアダプタ情報を設定している文はWMIの使い勝手が悪いと言わざるを得ませんが、一度試してみて、次回はもっと多くの内容を共有する機会があります
下のコードを見ると、このスクリプトには簡単な検証機能があります.IPアドレスではなく、アルファベット記号などが含まれている場合、このスクリプトにもエラーメッセージが表示されます.この機能は主に正規表現で実現されています.
#
$i = 0
${ip rules} = "\b[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\b"
Get-NetAdapter | ft -AutoSize name, InterfaceDescription, MacAddress, InterfaceIndex, Status
$netid = Read-Host " "
foreach ($id in (Get-NetAdapter).ifIndex)
{
if ($id -eq $netid)
{
$i++
}
}
if ($i -eq 0)
{
Write-Warning " ";
break
}
if ((Get-NetAdapter -InterfaceIndex $netid).Status -eq "Disconnected")
{
" ";
break
}
$ip = Read-Host " IP "
if ($ip -notmatch ${ip rules})
{
Write-Warning " IP ";
break
}
$dnsip = Read-Host " DNS IP "
if ($dnsip -notmatch ${ip rules})
{
Write-Warning " IP ";
break
}
$mask = Read-Host " "
if ((Get-NetAdapter -InterfaceIndex $netid).Status -eq "Disconnected")
{
Write-Warning " ";
break
}
elseif ((Get-NetAdapter -InterfaceIndex $netid).Status -eq "up")
{
set-DnsClientServerAddress -InterfaceIndex $netid -ServerAddresses $dnsip
if ((Get-NetIPAddress -InterfaceIndex $netid -AddressFamily IPv4).IPv4Address.StartsWith("169"))
{
New-NetIPAddress -InterfaceIndex $netid -IPAddress $ip -PrefixLength $mask
}
elseif ((Get-NetIPAddress -InterfaceIndex $netid -AddressFamily IPv4).IPv4Address.StartsWith("192"))
{
Remove-NetIPAddress -InterfaceIndex $netid -AddressFamily IPv4
New-NetIPAddress -InterfaceIndex $netid -IPAddress $ip -PrefixLength $mask
}
}
PowerShellでネットワークアダプタ情報を設定している文はWMIの使い勝手が悪いと言わざるを得ませんが、一度試してみて、次回はもっと多くの内容を共有する機会があります