Azure Cloud Shell의 PowerShell에 대한 빠른 시작Quickstart for PowerShell in Azure Cloud Shell

이 문서는 Azure Portal에서 Azure Cloud Shell의 PowerShell을 사용하는 방법을 자세히 설명합니다.This document details how to use the PowerShell in Cloud Shell in the Azure portal.

참고

Azure Cloud Shell의 Bash 빠른 시작도 사용할 수 있습니다.A Bash in Azure Cloud Shell Quickstart is also available.

Cloud Shell 시작Start Cloud Shell

  1. Azure Portal의 위쪽 탐색 모음에서 Azure Cloud Shell 버튼을 클릭합니다.Click on Cloud Shell button from the top navigation bar of the Azure portal

  2. 드롭다운에서 PowerShell 환경을 선택하면 Azure 드라이브 (Azure:)에 들어가게 됩니다.Select the PowerShell environment from the drop-down and you will be in Azure drive (Azure:)

PowerShell 명령 실행Run PowerShell commands

Azure Cloud Shell에서 다음과 같은 일반 PowerShell 명령을 실행합니다.Run regular PowerShell commands in the Cloud Shell, such as:

PS Azure:\> Get-Date

# Expected Output
Friday, July 27, 2018 7:08:48 AM

PS Azure:\> Get-AzVM -Status

# Expected Output
ResourceGroupName       Name       Location                VmSize   OsType     ProvisioningState  PowerState
-----------------       ----       --------                ------   ------     -----------------  ----------
MyResourceGroup2        Demo        westus         Standard_DS1_v2  Windows    Succeeded           running
MyResourceGroup         MyVM1       eastus            Standard_DS1  Windows    Succeeded           running
MyResourceGroup         MyVM2       eastus   Standard_DS2_v2_Promo  Windows    Succeeded           deallocated
  1. Azure 드라이브에서 모든 구독 나열List all your subscriptions from Azure drive

    PS Azure:\> dir
    
  2. 기본 구독에 cdcd to your preferred subscription

    PS Azure:\> cd MySubscriptionName
    PS Azure:\MySubscriptionName>
    
  3. 현재 구독에서 모든 Azure 리소스 보기View all your Azure resources under the current subscription

    Azure 리소스 뷰를 여러 개 나열하려면 dir을 입력합니다.Type dir to list multiple views of your Azure resources.

    PS Azure:\MySubscriptionName> dir
    
        Directory: azure:\MySubscriptionName
    
    Mode Name
    ---- ----
    +    AllResources
    +    ResourceGroups
    +    StorageAccounts
    +    VirtualMachines
    +    WebApps
    

AllResources 보기AllResources view

Azure 리소스를 보려면 AllResources 디렉터리 아래에 dir을 입력 합니다.Type dir under AllResources directory to view your Azure resources.

PS Azure:\MySubscriptionName> dir AllResources

리소스 그룹 탐색Explore resource groups

ResourceGroups 디렉터리로 가서 특정 리소스 그룹 안에서 가상 컴퓨터를 찾을 수 있습니다.You can go to the ResourceGroups directory and inside a specific resource group you can find virtual machines.

PS Azure:\MySubscriptionName> cd ResourceGroups\MyResourceGroup1\Microsoft.Compute\virtualMachines

PS Azure:\MySubscriptionName\ResourceGroups\MyResourceGroup1\Microsoft.Compute\virtualMachines> dir


    Directory: Azure:\MySubscriptionName\ResourceGroups\MyResourceGroup1\Microsoft.Compute\virtualMachines


VMName    Location   ProvisioningState VMSize          OS            SKU             OSVersion AdminUserName  NetworkInterfaceName
------    --------   ----------------- ------          --            ---             --------- -------------  --------------------
TestVm1   westus     Succeeded         Standard_DS2_v2 WindowsServer 2016-Datacenter Latest    AdminUser      demo371
TestVm2   westus     Succeeded         Standard_DS1_v2 WindowsServer 2016-Datacenter Latest    AdminUser      demo271

참고

dir을 두 번째 입력할 때, Cloud Shell이 훨씬 더 빠르게 항목을 표시할 수 있음을 알 수 있습니다.You may notice that the second time when you type dir, the Cloud Shell is able to display the items much faster. 이는 자식 항목이 향상된 사용자 환경을 위해 메모리에 캐시되기 때문입니다.This is because the child items are cached in memory for a better user experience. 그렇지만, 새로운 데이터를 가져오기 위해 언제나 dir -Force을 사용할 수 있습니다.However, you can always use dir -Force to get fresh data.

StorageAccounts 디렉터리에 들어가면 모든 스토리지 리소스를 쉽게 탐색할 수 있습니다.By entering into the StorageAccounts directory, you can easily navigate all your storage resources

PS Azure:\MySubscriptionName\StorageAccounts\MyStorageAccountName\Files> dir

    Directory: Azure:\MySubscriptionNameStorageAccounts\MyStorageAccountName\Files

Name          ConnectionString
----          ----------------
MyFileShare1  \\MyStorageAccountName.file.core.windows.net\MyFileShare1;AccountName=MyStorageAccountName AccountKey=<key>
MyFileShare2  \\MyStorageAccountName.file.core.windows.net\MyFileShare2;AccountName=MyStorageAccountName AccountKey=<key>
MyFileShare3  \\MyStorageAccountName.file.core.windows.net\MyFileShare3;AccountName=MyStorageAccountName AccountKey=<key>

연결 문자열과 함께 다음 명령을 사용하여 Azure Files 공유를 탑재할 수 있습니다.With the connection string, you can use the following command to mount the Azure Files share.

net use <DesiredDriveLetter>: \\<MyStorageAccountName>.file.core.windows.net\<MyFileShareName> <AccountKey> /user:Azure\<MyStorageAccountName>

자세한 내용은 Azure Files 공유를 탑재 하 고 Windows에서 공유에 액세스를 참조 하세요.For details, see Mount an Azure Files share and access the share in Windows.

또한 Azure Files 공유에서 디렉터리를 다음과 같이 탐색할 수 있습니다.You can also navigate the directories under the Azure Files share as follows:

PS Azure:\MySubscriptionName\StorageAccounts\MyStorageAccountName\Files> cd .\MyFileShare1\
PS Azure:\MySubscriptionName\StorageAccounts\MyStorageAccountName\Files\MyFileShare1> dir

Mode  Name
----  ----
+     TestFolder
.     hello.ps1

가상 머신과 상호 작용Interact with virtual machines

VirtualMachines 디렉터리를 통해 현재 구독에서 모든 가상 머신을 찾을 수 있습니다.You can find all your virtual machines under the current subscription via VirtualMachines directory.

PS Azure:\MySubscriptionName\VirtualMachines> dir

    Directory: Azure:\MySubscriptionName\VirtualMachines


Name       ResourceGroupName  Location  VmSize          OsType              NIC ProvisioningState  PowerState
----       -----------------  --------  ------          ------              --- -----------------  ----------
TestVm1    MyResourceGroup1   westus    Standard_DS2_v2 Windows       my2008r213         Succeeded     stopped
TestVm2    MyResourceGroup1   westus    Standard_DS1_v2 Windows          jpstest         Succeeded deallocated
TestVm10   MyResourceGroup2   eastus    Standard_DS1_v2 Windows           mytest         Succeeded     running

PowerShell 스크립트를 원격 VM에 걸쳐 호출Invoke PowerShell script across remote VMs

MyVM1이란 VM이 있다고 가정하고 Invoke-AzVMCommand를 사용하여 원격 컴퓨터에 PowerShell 스크립트 블록을 호출합니다.Assuming you have a VM, MyVM1, let's use Invoke-AzVMCommand to invoke a PowerShell script block on the remote machine.

Enable-AzVMPSRemoting -Name MyVM1 -ResourceGroupname MyResourceGroup
Invoke-AzVMCommand -Name MyVM1 -ResourceGroupName MyResourceGroup -Scriptblock {Get-ComputerInfo} -Credential (Get-Credential)

또한 먼저 VirtualMachines 디렉터리로 이동하고 다음과 같이 Invoke-AzVMCommand를 실행할 수 있습니다.You can also navigate to the VirtualMachines directory first and run Invoke-AzVMCommand as follows.

PS Azure:\> cd MySubscriptionName\ResourceGroups\MyResourceGroup\Microsoft.Compute\virtualMachines
PS Azure:\MySubscriptionName\ResourceGroups\MyResourceGroup\Microsoft.Compute\virtualMachines> Get-Item MyVM1 | Invoke-AzVMCommand -Scriptblock {Get-ComputerInfo} -Credential (Get-Credential)

# You will see output similar to the following:

PSComputerName                                          : 65.52.28.207
RunspaceId                                              : 2c2b60da-f9b9-4f42-a282-93316cb06fe1
WindowsBuildLabEx                                       : 14393.1066.amd64fre.rs1_release_sec.170327-1835
WindowsCurrentVersion                                   : 6.3
WindowsEditionId                                        : ServerDatacenter
WindowsInstallationType                                 : Server
WindowsInstallDateFromRegistry                          : 5/18/2017 11:26:08 PM
WindowsProductId                                        : 00376-40000-00000-AA947
WindowsProductName                                      : Windows Server 2016 Datacenter
WindowsRegisteredOrganization                           :
 ...

원격 VM에 대화형으로 로그온Interactively log on to a remote VM

Enter-AzVM을 사용하여 Azure에서 실행하는 VM에 대화형으로 로그인할 수 있습니다.You can use Enter-AzVM to interactively log into a VM running in Azure.

PS Azure:\> Enter-AzVM -Name MyVM1 -ResourceGroupName MyResourceGroup -Credential (Get-Credential)

또는 먼저 VirtualMachines 디렉터리로 이동하고 다음과 같이 Enter-AzVM를 실행할 수 있습니다.You can also navigate to the VirtualMachines directory first and run Enter-AzVM as follows

PS Azure:\MySubscriptionName\ResourceGroups\MyResourceGroup\Microsoft.Compute\virtualMachines> Get-Item MyVM1 | Enter-AzVM -Credential (Get-Credential)

WebApps 검색Discover WebApps

WebApps 디렉터리에 들어가면 웹앱 리소스를 쉽게 탐색할 수 있습니다.By entering into the WebApps directory, you can easily navigate your web apps resources

PS Azure:\MySubscriptionName> dir .\WebApps\

    Directory: Azure:\MySubscriptionName\WebApps

Name            State    ResourceGroup      EnabledHostNames                  Location
----            -----    -------------      ----------------                  --------
mywebapp1       Stopped  MyResourceGroup1   {mywebapp1.azurewebsites.net...   West US
mywebapp2       Running  MyResourceGroup2   {mywebapp2.azurewebsites.net...   West Europe
mywebapp3       Running  MyResourceGroup3   {mywebapp3.azurewebsites.net...   South Central US

# You can use Azure cmdlets to Start/Stop your web apps
PS Azure:\MySubscriptionName\WebApps> Start-AzWebApp -Name mywebapp1 -ResourceGroupName MyResourceGroup1

Name           State    ResourceGroup        EnabledHostNames                   Location
----           -----    -------------        ----------------                   --------
mywebapp1      Running  MyResourceGroup1     {mywebapp1.azurewebsites.net ...   West US

# Refresh the current state with -Force
PS Azure:\MySubscriptionName\WebApps> dir -Force

    Directory: Azure:\MySubscriptionName\WebApps

Name            State    ResourceGroup      EnabledHostNames                  Location
----            -----    -------------      ----------------                  --------
mywebapp1       Running  MyResourceGroup1   {mywebapp1.azurewebsites.net...   West US
mywebapp2       Running  MyResourceGroup2   {mywebapp2.azurewebsites.net...   West Europe
mywebapp3       Running  MyResourceGroup3   {mywebapp3.azurewebsites.net...   South Central US

SSHSSH

SSH를 사용하여 서버 또는 VM을 인증하려면 Cloud Shell에서 공개-프라이빗 키 쌍을 생성하고 퍼블릭 키를 원격 컴퓨터의 authorized_keys(예: /home/user/.ssh/authorized_keys)에 게시합니다.To authenticate to servers or VMs using SSH, generate the public-private key pair in Cloud Shell and publish the public key to authorized_keys on the remote machine, such as /home/user/.ssh/authorized_keys.

참고

Cloud Shell에서 ssh-keygen을 사용하여 SSH 프라이빗-공개 키를 만들고 이 키를 $env:USERPROFILE\.ssh에 게시할 수 있습니다.You can create SSH private-public keys using ssh-keygen and publish them to $env:USERPROFILE\.ssh in Cloud Shell.

SSH 사용Using SSH

Azure PowerShell cmdlet을 사용 하 여 새 VM 구성을 만들려면 여기 의 지침을 따르세요.Follow instructions here to create a new VM configuration using Azure PowerShell cmdlets. New-AzVM을 호출하여 배포를 시작하기 전에 SSH 공개 키를 VM 구성에 추가합니다.Before calling into New-AzVM to kick off the deployment, add SSH public key to the VM configuration. 새로 만든 VM에는 공개 키가 ~\.ssh\authorized_keys 위치에 포함되므로 자격 증명이 없는 SSH 세션을 VM에 사용할 수 있습니다.The newly created VM will contain the public key in the ~\.ssh\authorized_keys location, thereby enabling credential-free SSH session to the VM.

# Create VM config object - $vmConfig using instructions on linked page above

# Generate SSH keys in Cloud Shell
ssh-keygen -t rsa -b 2048 -f $HOME\.ssh\id_rsa 

# Ensure VM config is updated with SSH keys
$sshPublicKey = Get-Content "$HOME\.ssh\id_rsa.pub"
Add-AzVMSshPublicKey -VM $vmConfig -KeyData $sshPublicKey -Path "/home/azureuser/.ssh/authorized_keys"

# Create a virtual machine
New-AzVM -ResourceGroupName <yourResourceGroup> -Location <vmLocation> -VM $vmConfig

# SSH to the VM
ssh azureuser@MyVM.Domain.Com

사용할 수 있는 명령 목록List available commands

Azure 드라이브에서 상황별 Azure 명령을 가져오려면 Get-AzCommand를 입력합니다.Under Azure drive, type Get-AzCommand to get context-specific Azure commands.

또는 사용 가능한 Azure 명령을 알아보려면 언제나 Get-Command *az* -Module Az.*을 사용할 수 있습니다.Alternatively, you can always use Get-Command *az* -Module Az.* to find out the available Azure commands.

사용자 지정 모듈 설치Install custom modules

Install-Module를 실행 하 여 PowerShell 갤러리모듈을 설치할 수 있습니다.You can run Install-Module to install modules from the PowerShell Gallery.

Get-HelpGet-Help

Azure Cloud Shell에서 PowerShell에 대한 정보를 가져오려면 Get-Help을 입력합니다.Type Get-Help to get information about PowerShell in Azure Cloud Shell.

Get-Help

특정 명령에 대해 여전히 Get-Help를 실행한 후 뒤 이어 cmdlet을 실행할 수 있습니다.For a specific command, you can still do Get-Help followed by a cmdlet.

Get-Help Get-AzVM

Azure Files를 사용하여 데이터 저장Use Azure Files to store your data

예를 들어 helloworld.ps1이란 스크립트를 만들어 clouddrive에 저장하고 셸 세션 전반에 걸쳐 사용할 수 있습니다.You can create a script, say helloworld.ps1, and save it to your clouddrive to use it across shell sessions.

cd $HOME\clouddrive
# Create a new file in clouddrive directory
New-Item helloworld.ps1
# Open the new file for editing
code .\helloworld.ps1
# Add the content, such as 'Hello World!'
.\helloworld.ps1
Hello World!

다음에 Azure Cloud Shell의 PowerShell을 사용할 때 helloworld.ps1 파일은 Azure Files 공유를 탑재한 $HOME\clouddrive 디렉터리에 존재할 것입니다.Next time when you use PowerShell in Cloud Shell, the helloworld.ps1 file will exist under the $HOME\clouddrive directory that mounts your Azure Files share.

사용자 지정 프로필 사용Use custom profile

PowerShell 프로필 profile.ps1(또는 Microsoft.PowerShell_profile.ps1)을 만들어 PowerShell 환경을 사용자 지정할 수 있습니다.You can customize your PowerShell environment, by creating PowerShell profile(s) - profile.ps1 (or Microsoft.PowerShell_profile.ps1). 그것을 $profile.CurrentUserAllHosts(또는 $profile.CurrentUserAllHosts)에 저장하여 Cloud Shell 세션의 모든 PowerShell에 로드될 수 있게 합니다.Save it under $profile.CurrentUserAllHosts (or $profile.CurrentUserAllHosts), so that it can be loaded in every PowerShell in Cloud Shell session.

프로필을 만드는 방법에 대 한 자세한 내용은 프로필 정보를 참조 하세요.For how to create a profile, refer to About Profiles.

Git 사용Use Git

Cloud Shell에서 Git 리포지토리를 복제 하려면 개인용 액세스 토큰 을 만들고 사용자 이름으로 사용 해야 합니다.To clone a Git repo in the Cloud Shell, you need to create a personal access token and use it as the username. 토큰이 있다면 다음과 같이 리포지토리를 복제합니다.Once you have your token, clone the repository as follows:

  git clone https://<your-access-token>@github.com/username/repo.git

셸 종료Exit the shell

세션을 종료하려면 exit을 입력합니다.Type exit to terminate the session.