프리지아 랩

PowerShell ISE의 모듈 브라우저 확장 설치 문제를 해결하는 방법

PowerShell ISE는 확장성을 제공하는 멋진 통합 개발 환경입니다.

ISE의 [추가 기능] 메뉴에서 ISE 기능을 확장하는 애드온을 설치할 수 있는데, 여기에 버그가 있습니다. 

이 글에서 다루는 <모듈 브라우저>는 통합 스크립팅 환경 내에서 모듈을 다운로드하고 관리할 수 있도록 도와주는 확장 기능입니다.


[모듈 브라우저 추가 기능 도구 가져오기]를 클릭하면 실행 파일을 다운로드하고 설치하게 되는데, 설치가 끝난 후 ISE를 다시 시작해보면, 모듈 브라우저에서 "갤러리의 모듈을 조회하는데 NuGet-anycpu.exe가 필요하므로 다운로드해서 설치하겠냐"는 메시지를 표시합니다.


[Accept] 버튼을 클릭하면, 패키지 공급자 'NuGet'을 찾을 수없다는 메시지와 함께 '초기화 실패' 메시지를 표시합니다.


이 문제의 원인은, 모듈 브라우저는 <PowerShell Gallery>에서 새로운 이름(ISEModuleBrowserAddon)으로 배포하는 버전을 설치해야 하는데, ISE의 메뉴 링크가 변경되지 않은 까닭입니다.


이제, 제대로된 ISE용 모듈 브라우저를 설치하는 방법은 다음의 단계를 따라하세요.

1. 관리자 권한으로 실행한 PowerShell ISE의 콘솔창에서 다음 명령을 실행합니다.

Install-Module -Name ISEModuleBrowserAddon


2. C:\Users\[User Profile]\Documents\WindowsPowerShell 위치에서, Microsoft.PowerShellISE_profile.ps1 파일을 찾아서 편집기로 오픈 합니다.
해당 파일이 없다면, 만들어 주세요.


3. 다음 내용을 추가한 다음 파일을 저장합니다.


#Module Browser Begin
#Version: 1.0.0
Add-Type -Path 'C:\Program Files\WindowsPowerShell\Modules\ISEModuleBrowserAddon\1.0.1.0\ISEModuleBrowserAddon.dll'
$moduleBrowser = $psISE.CurrentPowerShellTab.VerticalAddOnTools.Add('Module Browser', [ModuleBrowser.Views.MainView], $true)
$psISE.CurrentPowerShellTab.VisibleVerticalAddOnTools.SelectedAddOnTool = $moduleBrowser
#Module Browser End


4. 열려 있는 PowerShell ISE를 종료하고 다시 실행하면, 모듈 브라우저가 다음 화면 처럼 제대로 실행됩니다.


5. 추가적으로, ISE의 [추가 기능] 메뉴에 있는 [스크립트 브라우저 추가 기능 도구 가져오기]를 설치하려는 경우, 메뉴를 클릭하면 연결되는 웹 사이트 링크는 깨졌습니다. 따라서 PowerShell Gallery 사이트에 가서 확인하거나, 다음 처럼 검색 상자에서 scriptbrowser를 입력하고 검색해 결과를 확인한 뒤 설치할 수 있습니다.


Comment +0

Azure PowerShell 맛보기 실습 가이드

<실무에서 바로쓰는 파워셸> 저자가 2018년 4월 21일 Global Azure Boot Camp 발표를 위해 전날 밤새가며 만든 실습 가이드 입니다.
효율적인 실습을 위해 이 글의 PowerShell 구문을 직접 입력해 실행해보기 바랍니다. 명령 구문 복사는 막아 놓았습니다.

실습하는 방법.

1. 아래의 다운로드 파일을 먼저 내려받아 C:\AzureBC라는 폴더에 저장 해 놓습니다.
2. PowerShell ISE를 관리자 권한으로 실행합니다.
3. Azure 구독을 준비합니다.
4. 모든 PowerShell 구문을 ISE 편집 창에 직접 입력하고, 구문단위로 실행합니다(F8, 선택 실행).
5. Azure 포털에서 결과를 확인합니다. 구문을 수행한 후 바로 확인이 안될 수 있습니다. 그 이유는 해당 구문 다음의 몇 가지 구문이 실행되어야 비로소 해당 작업이 완성되는 경우입니다.
6. 가급적 주석을 달도록 노력해보세요. 주석 표시는 해당 구문 앞에 #을 붙이면 됩니다.

1. Azure 구독 연결 및 리소스 관리

1.1 Azure PowerShell을 사용해 Azure 구독 연결하기

1. PowerShell ISE를 관리자 권한으로 실행합니다.




2. PowerShell ISE의 콘솔 창에서 다음 명령을 입력해 Azure PowerShell을 설치합니다. (인터넷 연결 필수)


Install-Module -Name AzureRm


3. PowerShell ISE의 콘솔 창에서 다음 명령을 입력하고 실행한다.


Connect-AzureRmAccount


4. PowerShell ISE의 콘솔 창에서 다음 명령을 입력해 현재 Azure 구독의 정보를 확인합니다.


Get-AzureRmSubscription


5. 여러개의 구독이 있다면, 현재 세션에서 사용하려는 구독을 선택합니다.


Select-AzureRmSubscription -SubscriptionId 'Your SubscriptionId'


6. PowerShell ISE의 콘솔 창에서 다음 명령을 입력해 리소스 공급자 정보를 확인합니다.


Get-AzureRmResourceProvider


1.2 Azure PowerShell을 사용해 Azure 리소스와 리소스 그룹 관리하기

1. 첫 번째 리소스 그룹을 만듭니다. 자신의 구독을 선택하고, 위치는 EastUS로 합니다.


$rg1=New-AzureRmResourceGroup -Name AzureBCKorRG01 -Location EastUS


2. 뒤에서 사용하기 위해 리소스 그룹의 위치를 변수에 저장합니다.


$locName = (Get-AzureRmResourceGroup -Name $rg1.ResourceGroupName).Location


3. 첫 번째 리소스 그룹과 동일한 위치에 두 번째 리소스 그룹(AzureBCKorRG02)을 만듭니다.


$rg2 = New-AzureRmResourceGroup -Name AzureBCKorRG02 -Location $locName


4. Azure 리소스의 예로 라우트 테이블(AzureBCKor01-rt)을 하나 만듭니다.


$resName = "AzureBCKor01-rt"


New-AzureRmRouteTable -ResourceGroupName $rg1.ResourceGroupName -Location $locName -Name $resName


5. 앞서 만든 리소스를 나타내는 개체를 조회해서 변수($res)에 저장합니다.


$res = Get-AzureRmResource -ResourceName $resName -ResourceGroupName $rg1.ResourceGroupName


6. 라우트 테이블 리소스($res)를 새로운 리소스 그룹($rg2.ResourceGroupName)으로 이동합니다.


Move-AzureRmResource -DestinationResourceGroupName $rg2.ResourceGroupName -ResourceId $res.ResourceId


7. 새로운 리소스 그룹에서 이동한 리소스를 확인합니다.


Get-AzureRmResource | Where-Object ResourceGroupName -eq $rg2.ResourceGroupName


*요약
AzureBCKorRG01와 AzureBCKorRG02라는 두 개의 리소스 그룹을 만들었으며, AzureBCKorRG01에 네트워크 리소스 중 하나인 AzureBCKor01-rt라는 라우터 테이블을 만들었다가, AzureBCKorRG02라는 리소스 그룹으로 이동했습니다.


2. Azure 가상 네트워킹과 가상 머신

2.1 2개의 가상 네트워크와 가상 네트워크 피어링 구성하기.

1. 첫 번째 가상 네트워크에 추가할 서브넷을 2개 만듭니다. 서브넷의 이름은 각각 VNet1SubNet1와 VNet1SubNet2 주소 공간은 각각 10.11.0.0/24와 10.11.1.0/24로 합니다.


$subnet1=New-AzureRmVirtualNetworkSubnetConfig -Name 'VNet1SubNet1' -AddressPrefix '10.11.0.0/24'

$subnet2=New-AzureRmVirtualNetworkSubnetConfig -Name 'VNet1SubNet2' -AddressPrefix '10.11.1.0/24'


2. 주소 공간이 10.11.0.0/16인 AzureBCKor01-VNet1이라는 이름의 첫 번째 가상 네트워크를 만들고 이 리소스에 대한 참조를 $vnet1 변수에 저장합니다.


$vnet1 = New-AzureRmVirtualNetwork -ResourceGroupName $rg1.ResourceGroupName -Name 'AzureBCKor01-VNet1' -AddressPrefix '10.11.0.0/16' -Location $locName -Subnet $subnet1,$subnet2


3. 가상 네트워크의 구성을 업데이트 합니다. 다음 명령을 수행하고 Azure 포털에서 확인해봅니다.


Set-AzureRmVirtualNetwork -VirtualNetwork $vnet1


4. 두 번째 가상 네트워크에 추가할 서브넷을 1개 만듭니다. 서브넷의 이름은 VNet2SubNet1 주소 공간은 10.10.0.0/24로 합니다.


$subnet3=New-AzureRmVirtualNetworkSubnetConfig -Name 'VNet2SubNet1' -AddressPrefix '10.10.0.0/24'


5. 주소 공간이 10.10.0.0/16인 AzureBCKor01-VNet2라는 이름의 두 번째 가상 네트워크를 만들고 이 리소스에 대한 참조를 $vnet2 변수에 저장합니다.


$vnet2 = New-AzureRmVirtualNetwork -ResourceGroupName $rg1.ResourceGroupName -Name 'AzureBCKor01-VNet2' -AddressPrefix '10.10.0.0/16' -Location $locName -Subnet $subnet3


6. 가상 네트워크의 구성을 업데이트 합니다.


Set-AzureRmVirtualNetwork -VirtualNetwork $vnet2

2.2 AzureBCKor01-vnet1 가상 네트워크를 사용하는 가상 머신 만들기

1. 가상 머신을 만드는데 필요한 기본 변수를 선언합니다.


$rgName  = 'AzureBCKorRG01'               #리소스 그룹 이름
$vmName  = 'AzureBCKorVM1'                #가상머신 이름
$pubName = 'MicrosoftWindowsServer'      #운영체제 제조사
$offerName = 'WindowsServer'                #운영체제 타입
$skuName = '2016-Datacenter'                #운영체제 버전
$vmSize  = 'Standard_D1_v2'                    #VM 규모
$subnetName = 'VNet1SubNet1'                #서브넷 이름
$nsgName    = "$vmName-nsg"                 #네트워크 보안그룹
$pipName    = "$vmName-pip"                 #공인 IP 이름
$nicName    = "$vmName-nic"                 #네트워크카드 이름
$osDiskName = "$vmName-osdisk"            #운영체제 디스크이름
$osDiskSize = 128                                   #운영체제 디스크 크기
$osDiskType = 'Standard_LRS'                    #운영체제 디스크 복제


2. AzureBCKor01-vnet1 가상 네트워크의 첫번째 서브넷 ID를 변수($subnetid1)에 저장합니다.


$subnetid1 = (Get-AzureRmVirtualNetworkSubnetConfig -Name $subnetName -VirtualNetwork $vnet1).Id


3. 진단 저장소 계정(azurebckor[Your Name Initial]sa)을 만듭니다. 저장소 이름은 반드시 소문자로 합니다.


$storageAccount = New-AzureRmStorageAccount -Name azurebckor[Your Name Initial]sa -ResourceGroupName $rgName -SkuName Standard_LRS -Location $locName -Kind Storage


4. 관리자 자격증명을 만듭니다.


$adminUsername = 'azureman'
$adminPassword = 'Pa55w.rd1234'
$adminCreds = New-Object PSCredential $adminUsername, ($adminPassword | ConvertTo-SecureString -AsPlainText -Force)


5. 네트워크 보안 그룹에서 먼저 RDP를 허용하는 규칙을 만듭니다.


$nsgRuleRDP = New-AzureRmNetworkSecurityRuleConfig -Name 'default-allow-rdp' -Protocol Tcp -Direction Inbound -Priority 1000 -SourceAddressPrefix * -SourcePortRange * -DestinationAddressPrefix * -DestinationPortRange 3389 -Access Allow


6. 앞서 만든 규칙을 적용한 네트워크 보안 그룹을 만듭니다.


$nsg = New-AzureRmNetworkSecurityGroup -ResourceGroupName $rgName -Location $locName -Name $nsgName -SecurityRules $nsgRuleRDP


7. 공인 IP를 만듭니다.


$pip = New-AzureRmPublicIpAddress -Name $pipName -ResourceGroupName $rgName -Location $locName -AllocationMethod Dynamic


8. 공인 IP를 사용하는 NIC를 만듭니다.


$nic = New-AzureRmNetworkInterface -Name $nicName -ResourceGroupName $rgName -Location $locName -SubnetId $subnetid1 -PublicIpAddressId $pip.Id -NetworkSecurityGroupId $nsg.Id


9. VM 기본 구성을 설정합니다.


$vmConfig = New-AzureRmVMConfig -VMName $vmName -VMSize $vmSize


10. 네트워크 카드를 설정합니다.


Add-AzureRmVMNetworkInterface -VM $vmConfig -Id $nic.Id


11. VM 부트 진단을 활성화 합니다.


Set-AzureRmVMBootDiagnostics -Enable -ResourceGroupName $rgName -VM $vmConfig -StorageAccountName $storageAccount[0].StorageAccountName


12. VM 운영체제와 원본 이미지, OS 디스크를 설정합니다.


Set-AzureRmVMOperatingSystem -VM $vmConfig -Windows -ComputerName $vmName -Credential $adminCreds

Set-AzureRmVMSourceImage -VM $vmConfig -PublisherName $pubName -Offer $offerName -Skus $skuName -Version 'latest'

Set-AzureRmVMOSDisk -VM $vmConfig -Name $osDiskName -DiskSizeInGB $osDiskSize -StorageAccountType $osDiskType -CreateOption fromImage


13. 지금까지의 설정을 바탕으로 VM을 만듭니다.


New-AzureRmVM -ResourceGroupName $rgName -Location $locName -VM $vmConfig


2.3 AzureBCKor01-vnet2 가상 네트워크를 사용하는 가상 머신 만들기

1. 가상 머신을 만드는데 필요한 기본 변수를 선언합니다.

$rgName  = 'AzureBCKorRG01'        #리소스 그룹 이름
$vmName  = 'AzureBCKorVM2'        #가상머신 이름
$subnetName = 'VNet2SubNet1'        #서브넷 이름
$nsgName    = "$vmName-nsg"         #네트워크 보안그룹
$pipName    = "$vmName-pip"         #공인 IP 이름
$nicName    = "$vmName-nic"         #네트워크카드 이름
$osDiskName = "$vmName-osdisk"    #운영체제 디스크이름


2. AzureBCKor01-vnet2 가상 네트워크의 첫번째 서브넷 ID를 변수($subnetid2)에 저장합니다.


$subnetid2 = (Get-AzureRmVirtualNetworkSubnetConfig -Name $subnetName -VirtualNetwork $vnet2).Id


3. 2.2의 6~7까지를 다시 수행합니다.


4. 공인 IP를 사용하는 NIC를 만듭니다.


$nic = New-AzureRmNetworkInterface -Name $nicName -ResourceGroupName $rgName -Location $locName -SubnetId $subnetid2 -PublicIpAddressId $pip.Id -NetworkSecurityGroupId $nsg.Id


5. 2.2의 9~13까지를 다시 수행합니다.



2.4 가상네트워크 피어링과 서로 다른 네트워크의 가상머신 테스트


1. AzureBCKor01-vnet1 -> AzureBCKor01-vnet2로의 가상 네트워크 피어링을 추가합니다.


Add-AzureRmVirtualNetworkPeering -Name VNet1ToVNet2 -VirtualNetwork $vnet1 -RemoteVirtualNetworkId $vnet2.Id


2. AzureBCKor01-vnet2 -> AzureBCKor01-vnet1로의 가상 네트워크 피어링을 추가합니다.


Add-AzureRmVirtualNetworkPeering -Name VNet2ToVNet1 -VirtualNetwork $vnet2 -RemoteVirtualNetworkId $vnet1.Id


3. 가상 네트워크 양방향 피어링 결과를 확인합니다.


Get-AzureRmVirtualNetworkPeering -VirtualNetworkName AzureBCKor01-VNet1  -ResourceGroupName $rgName -Name VNet1ToVNet2

Get-AzureRmVirtualNetworkPeering -VirtualNetworkName AzureBCKor01-VNet2  -ResourceGroupName $rgName -Name VNet2ToVNet1


4. Azure 포털에서 리소스그룹 AzureBCKorRG01내의 AzureBCKorVM1을 클릭하고  [개요] 블레이드에서 상단의 [공용 IP 주소]를 확인하고 mstsc를 실행해 원격데스크톱으로 접속합니다.




5. AzureBCKorVM1에서 AzureBCKorVM2로 ICMP 테스트를 수행합니다.

AzureBCKorVM2에서 방화벽을 해제하고 테스트 한 후, 다시 방화벽을 원래대로 복구하세요.


Test-NetConnection -ComputerName [AzureBCKorVM2의 사설 IP]


*요약
2개의 서브넷이 있는 가상 네트워크 하나와 1개의 서브넷이 있는 가상 네트워크를 만들었습니다. 각 가상 네트워크에서 동작하는 가상 머신을 하나씩 만들어 배치했습니다. 또한 두 개의 가상 네트워크를 피어링 기능으로 양방향 연결해, 앞서 만든 서로 다른 네트워크의 가상 머신이 서로 통신이 가능함을 확인했습니다.


3. Azure 웹앱

3.1 서로 다른 지역에 Azure 웹앱 만들기

1. 한국 중부에 새로운 리소스 그룹을 하나 만듭니다.


$rg3=New-AzureRmResourceGroup -Name AzureBCKorRG03 -Location koreacentral


2. 한국 중부에 배치할 웹 앱의 앱 서비스 계획을 만들고 변수에 저장합니다.


$rg03asp=New-AzureRmAppServicePlan -Location 'Korea Central' -ResourceGroupName AzureBCKorRG03 -Name AzureBCKorAS -Tier Standard -WorkerSize Small -NumberofWorkers 1


3. AzureBCKorRG03 리소스 그룹에 웹 앱(azurebckorweb1-[Your Name Initial])을 하나 만듭니다. 위치는 한국 중부를 지정합니다.


New-AzureRmWebApp -ResourceGroupName $rg3.ResourceGroupName -Name azurebckorweb-[Your Name Initial] -Location 'Korea Central' -AppServicePlan AzureBCKorAS


4. 미국 동부에 배치할 웹 앱의 앱 서비스 계획을 만들고 변수에 저장합니다.


$rg01asp=New-AzureRmAppServicePlan -Location 'East US' -ResourceGroupName AzureBCKorRG01 -Name AzureBCEastUSAS -Tier Standard -WorkerSize Small -NumberofWorkers 1


5. AzureBCKorRG01 리소스 그룹에 웹 앱(azurebckorweb2-[Your Name Initial])을 하나 더 만듭니다. 위치는 미국 동부를 지정합니다.


New-AzureRmWebApp -ResourceGroupName $rg1.ResourceGroupName -Name azurebcusweb-[Your Name Initial] -Location 'East US' -AppServicePlan AzureBCEastUSAS


6. 실습 가이드에 게시된 webapp-korpub.zip파일과 webapp-uspub.zip 파일을 다운로드해 C:\AzureBC 폴더 아래에 저장합니다.


7. 이번엔 Azure 클래식 모델을 사용하기 위해, 다시 기본 구독 환경을 바꿉니다. 다음 명령을 실행하고 다시 로그인합니다.


Add-AzureAccount


8. 한국 중부에 배포한 웹 앱에 webapp-korpub.zip을 게시합니다.


Publish-AzureWebsiteProject -Package C:\Azurebc\webapp-korpub.zip -Name azurebckorweb1-[Your Name Initial]


9. 배포한 웹 앱의 동작을 확인합니다.


Show-AzureWebsite -Name azurebckorweb1


10. 미국 동부에 배포한 웹 앱에 webapp-uspub.zip을 게시합니다.


Publish-AzureWebsiteProject -Package C:\Azurebc\webapp-uspub.zip -Name azurebckorweb2-[Your Name Initial]


11. 배포함 웹 앱의 동작을 확인합니다.


Show-AzureWebsite -Name azurebckorweb2


3.2 트래픽 관리자를 이용해 접속 지역을 기반으로 웹 앱서비스하기

1. AzureBCKorRG03 리소스 그룹에 트래픽 관리자 프로필(azurebctm)을 만듭니다. 이때 DNS 이름은 bctm[Your Name Initial]로 합니다. 모니터링 프로토콜은 HTTP, 모니터링 포트는 80, TTL 값은 30으로 지정합니다.


New-AzureRmTrafficManagerProfile -ResourceGroupName AzureBCKorRG02 -Name azurebctm -TrafficRoutingMethod Geographic -RelativeDnsName "bctm[Your Name Initial]" -Ttl 30 -MonitorProtocol HTTP -MonitorPort 80 -MonitorPath "/"


2. 끝점을 만드는데 필요한 트래픽 관리자 프로필 리소스 개체와 앞서 만든 웹 앱 개체를  변수에 저장합니다.


$tmprofile=Get-AzureRmTrafficManagerProfile -Name azurebctm -ResourceGroupName AzureBCKorRG02
$korweb = Get-AzureRmWebApp -Name azurebckorweb1
$usweb = Get-AzureRmWebApp -Name azurebckorweb2


3. 트래픽 관리자에서 라우팅할 첫 번째 끝점을 지정합니다. 먼저, 앞서 만든 한국 중부의 웹 앱으로 라우팅하는 끝점을 등록합니다.

-끝점 이름: korweb
-지리적 매핑: KR
-형식: Azure끝점
-상태: 사용


Add-AzureRmTrafficManagerEndpointConfig -EndpointName korweb -EndpointStatus Enabled -TargetResourceId $korweb.id -TrafficManagerProfile $tmprofile -GeoMapping KR -Type AzureEndpoints


4. 트래픽 관리자에서 라우팅할 두 번째 끝점을 지정합니다. 앞서 만든 미국 동부의 웹 앱으로 라우팅하는 끝점을 등록합니다.

-끝점 이름: usweb
-지리적 매핑: US
-형식: Azure끝점
-상태: 사용


Add-AzureRmTrafficManagerEndpointConfig -EndpointName usweb -EndpointStatus Enabled -TargetResourceId $usweb.id -TrafficManagerProfile $tmprofile -GeoMapping US -Type AzureEndpoints


5. 이제 트래픽 관리자 [개요] 블레이드에서 DNS 이름을 클릭해 어떤 웹사이트로 접속되는지 확인합니다. 한국에서 접속한다면, azurebckorweb.azurewebsites.net으로 라우팅되어야 합니다.



*요약

한국 중부와 미국 동부에 각각 웹앱을 만들고 개발한 웹 사이트를 각 웹 앱에 배포했습니다. 지리적 기반으로 부하를 분산하는 트래픽 관리자를 만들어 각 웹 앱을 끝점으로 등록하고, 한국에서 접속했을 때 한국 중부의 웹 앱이 응답하는 것을 확인했습니다.


4. 리소스 정리

실습 가이드 웹 페이지에서 RemoveAllResources.ps1 파일을 다운로드해 C:\Azurebc 폴더에 저장하고 다음과 같이 실행합니다. 스크립트에 정의한 Remove-AzureBCResources 함수가 현재 세션에 로드됩니다.


주의) 계속 사용해야 하는 리소스 그룹이 있다면, 이 명령을 실행하지 마시고, 각 리소스 그룹을 별도로 삭제하세요.


. C:\AzureBC\RemoveAllResources.ps1


이제, 지금까지 만든 모든 리소스를 지우기 위해 Remove-AzureBCResources 명령을 실행합니다.


Comment +0

 Azure에서 PowerShell을 사용한 가상 네트워크와 서브넷을 만들때 범할 수 있는 실수.


Azure에서 PowerShell을 사용해 가상네트워크와 서브넷을 만드는 방법은 두 가지 입니다.

1. New-AzureRmVirtualNetworkSubnetConfig를 먼저 실행한 후, New-AzureRmVirtualNetwork을 실행하는 방법.

2. New-AzureRmVirtualNetwork으로 가상 네트워크를 먼저 만든 후, Add-AzureRmVirtualNetworkSubnetConfig를 실행하는 방법.

물론, 최종적으로 Set-AzureRmVirtualNetwork으로 설정을 업데이트 해야 합니다.

두 가지 방법 모두 가상네트워크를 만들고 해당 네트워크에 서브넷을 만들지만, 각 방법으로 만든 서브넷의 정보를 보면 다음 차이가 있습니다.

1번의 방법으로 한 경우, 



2번의 방법으로 한 경우,


두 가지 결과의 차이점이 보이나요?

2번 방법은 Id와 Etag 값이 없습니다.
이런 경우 네트워크 카드 리소스를 만들때 지정해야 하는 서브넷 ID를 사용하지 못하니 문제가 됩니다.

여기서 중요한 PowerShell 사용의 실수가 나옵니다.

2번의 경우 먼저, 다음과 같이 가상 네트워크를 만듭니다.

$vnet3 = New-AzureRmVirtualNetwork -ResourceGroupName $rg2.ResourceGroupName -Name 'AzureBCKor02-VNet1' -AddressPrefix '10.12.0.0/16' -Location $locName

그리고 여기에 서브넷을 다음과 같이 추가하겠죠.
$subnet4=Add-AzureRmVirtualNetworkSubnetConfig -Name 'VNet3SubNet1' -AddressPrefix '10.12.0.0/24' -VirtualNetwork $vnet3

그 다음, 최종적으로 설정을 업데이트 합니다.

Set-AzureRmVirtualNetwork -VirtualNetwork $vnet3

그리고, 흐뭇하게 $vnet3 변수에 담긴 서브넷의 정보를 확인하면, 위의 2번 그림과 같은 상황이 발생합니다.

결론적으로, $vnet3 변수에 담아 놓은 정보는 Set-AzureRmVirtualNetwork으로 업데이트하기전의 결과이므로, 다음 명령으로 다시 한번 값을 업데이트 해줘야, 나중에 정확한 값을 사용할 수 있는 것입니다.

$vnet3=Get-AzureRmVirtualNetwork -Name 'AzureBCKor02-VNet1' -ResourceGroupName $rg2.ResourceGroupName


 


Comment +0

Mixed Reality Toolkit에서 음성  명령 처리 방법의 변화


홀로렌즈에서 음성 명령이 실행되게 하려면 맨 먼저 해야 할 일이 마이크로폰을 허용하도록 설정하는 일이다.

이 설정 부분의 위치는 Mixed Reality Toolkit으로 오면서 유니티에서 설정 위치가 바뀌었다.


[AS-WAS]
HoloToolkit | Configure | Apply HoloLens Capability Settings


[AS-IS]
Mixed Reality Toolkit | Configure | Apply UWP Capability Settings



다음의 화면에서 microphone 옵션을 선택하고 적용을 클릭한다.




홀로렌즈 툴킷이 Mixed Reality Toolkit으로 바뀌면서 애셋의 구조에도 변화가 있었다.


기존에는 | HoloToolkit | Input | Scripts | Voice 아래의 KeywordManager 스크립트를 게임 개체에 연결했다.


연결한 후 해당 개체를 선택하고 오른편 [Inspector]에서 필요한 키워드의 크기를 정하면 다음과 같은 화면을 볼 수 있었다.



이 화면에서 키워드를 만들고 키워드의 액션을 매핑하면 되었다.


달라진 방법은 이제 Speech Input Source에서 키워드를 만들고 Speech Input Handler에서 해당 키워드에 액션을 매핑시키는 방식이다.


먼저, 다음 위치에서 SpeechInputSource.cs 스크립트를 해당 개체에 연결한다.


Assets | HoloToolkit | Input | Scripts | InputSources


[Inspector]에서 Speech Input Source 화면은 다음과 같으며, 여기서 필요한 키워드를 만든다.



다음으로, 다음 위치에서 SpeechInputHandler.cs 스크립트를 해당 개체에 연결한다.


Assets | HoloToolkit | Input | Scripts | Utilities | Interaction


[Inspector]에서 Speech Input Source 화면은 다음과 같으며, 여기서 앞서 정의한 키워드와 Response를 연결한다.


물론 Response에 연결할 음성 명령 처리 스크립트는 미리 만들어 놓아야 한다.


Comment +0