PowerShell量産VMエンドポイント

9087 ワード

PowerShellスクリプトでVMエンドポイントを一括追加できます.以下の案を参考にしてください.
準備作業–PowerShell接続China Azure
 
1.公式サイトからページをダウンロードし、Windows Azure PowerShell:http://www.windowsazure.cn/zh-cn/downloads/#cmd-line-toolsをダウンロードしてインストールする
2.インストールが完了したら管理者として実行し、PowerShellアイコンを右クリックし、管理者として実行することを選択します.
3.コマンドGet-AzurePublishSettings File-Environment"AzureChinaCloud"を実行し、開いたページからWindows Azure Subscriptionのパブリケーションプロファイルをダウンロードします.
clip_image001
4.PowerShellでImport-AzurePublishSettings File「プロファイルのローカル保存パスのパブリッシュ」を実行します.
clip_image002
シナリオ1:カスタムエンドポイントを一括追加する
メモ:この例では、仮想マシンに3つのポートが追加されています.
ポート名
プロトコル
共通ポート
プライベートポート
MyPort1
tcp
5001
5001
MyPort2
tcp
5002
5002
MyPort3
udp
5003
5003
この例では、クラウドサービス名と仮想マシン名は、JohnsonLinuxです.より多くのポートを追加する必要がある場合は、対応するフォーマットに従って$newVmEndpointsにポート構成を追加できます.フォーマット:(「ポート名」,「プロトコル」,「共通ポート」,「プライベートポート」)
$serviceName = "JohnsonLinux"

$name = "JohnsonLinux"



$newVmEndpoints = ("MyPort1","tcp",5001,5001) ,("MyPort2","tcp",5002,5002) ,("MyPort3","udp",5003,5003)



$myVm = Get-AzureVM -ServiceName $serviceName -Name $name



foreach ($endpointConfig in $newVmEndpoints)

{

$myVm | Add-AzureEndpoint -Name $endpointConfig[0] -Protocol $endpointConfig[1] -PublicPort $endpointConfig[2] -LocalPort $endpointConfig[3]

}



$myVm | Update-AzureVM

シナリオ2:範囲の端点を一括追加
 
スクリプトのパラメータの説明を以下に示します.代わりにしてください.
$serviceName–VMが属するクラウドサービス名
$name–VM名
$portFrom–開始ポート番号
$portTo–終了ポート番号
$protocal–プロトコル名
次の例では、
1.TCPエンドポイントを1-150個追加しました.
2.共通ポートとプライベートポートの値が一致します.
3.エンドポイント名の形式は、プロトコル名+ポート番号です.
4.ポートが既に追加されている場合、スクリプトはポートを省略します.
5.同時に、テストの過程で、現在、最大150個のポートしか開放できないことを発見しました.
$serviceName = "JohnsonLinux"

$name = "JohnsonLinux"

$protocol = "tcp"

$portFrom = 1

$portTo = 150



$myVm = Get-AzureVM -ServiceName $serviceName -Name $name 



$existingPublicPorts = New-Object System.Collections.ArrayList

$existingLocalPorts = New-Object System.Collections.ArrayList





foreach($endpoint in $myVm | Get-AzureEndpoint)

{

    if($protocal.Equals($endpoint.Protocol))

    {

        $existingPublicPorts.Add($endpoint.Port)

        $existingLocalPorts.Add($endpoint.LocalPort)

    }

}



for($index = $portFrom; $index -le $portTo; $index++)

{

    if(!$existingPublicPorts.Contains($index) -and !$existingLocalPorts.Contains($index))

    {

        $portName = $protocol + $index

        $myVm | Add-AzureEndpoint -Name $portName -Protocol $protocol -PublicPort $index -LocalPort $index

    }



}



$myVm | Update-AzureVM

 
次に、スクリプトを実行した後の結果の一部を示します.
clip_image003
 
VMの下にあるすべてのエンドポイントを一括削除します.
$serviceName = "JohnsonLinux"

$name = "JohnsonLinux"



$myVm = Get-AzureVM -ServiceName $serviceName -Name $name 



foreach($endpoint in $myVm | Get-AzureEndpoint)

{

    $myVm | Remove-AzureEndpoint -Name $endpoint.Name

}



$myVm | Update-AzureVM