Szybki start: Program PowerShell w usłudze Azure Cloud Shell

W tym dokumencie szczegółowo opisano sposób używania programu PowerShell w programie Cloud Shell w Azure Portal.

Środowisko programu PowerShell w usłudze Azure Cloud Shell teraz uruchamia program PowerShell 7.2 w środowisku systemu Linux. Istnieją różnice w środowisku programu PowerShell w Cloud Shell w porównaniu z Windows PowerShell.

W systemie plików w systemie Linux jest uwzględniana wielkość liter. System Windows uważa file.txt i FILE.txt ma być tym samym plikiem. W systemie Linux są uważane za różne pliki. Podczas kończenia karty w systemie plików należy użyć odpowiedniej wielkości liter. Środowiska specyficzne dla programu PowerShell, takie jak nazwy poleceń cmdlet wypełniania tabulatorami, parametry i wartości, nie są uwzględniane w wielkości liter.

Aby uzyskać szczegółową listę różnic, zobacz Różnice programu PowerShell na platformach innych niż Windows.

Uruchamianie usługi Cloud Shell

  1. Wybierz przycisk Cloud Shell na górnym pasku nawigacyjnym Azure Portal

    Zrzut ekranu przedstawiający sposób uruchamiania usługi Azure Cloud Shell z Azure Portal.

  2. Wybierz środowisko programu PowerShell z listy rozwijanej i będziesz znajdować się na dysku platformy Azure (Azure:)

    Zrzut ekranu przedstawiający sposób wybierania środowiska programu PowerShell dla Cloud Shell Azure.

Uruchamianie poleceń programu PowerShell

Uruchom regularne polecenia programu PowerShell w Cloud Shell, takie jak:

PS Azure:\> Get-Date
# You will see output similar to the following:
Friday, July 27, 2018 7:08:48 AM
PS Azure:\> Get-AzVM -Status
# You will see output similar to the following:
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

Interakcja z maszynami wirtualnymi

Wszystkie maszyny wirtualne można znaleźć w bieżącej subskrypcji za pośrednictwem VirtualMachines katalogu.

PS Azure:\MySubscriptionName\VirtualMachines> dir
# You will see output similar to the following:
    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

Wywoływanie skryptu programu PowerShell na zdalnych maszynach wirtualnych

Zakładając, że masz maszynę wirtualną MyVM1, użyjmy Invoke-AzVMCommand polecenia , aby wywołać blok skryptu programu PowerShell na maszynie zdalnej.

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

Możesz również przejść do katalogu VirtualMachines najpierw i uruchomić w Invoke-AzVMCommand następujący sposób.

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                           :
...

Interaktywne logowanie do zdalnej maszyny wirtualnej

Możesz użyć Enter-AzVM polecenia , aby interaktywnie zalogować się do maszyny wirtualnej uruchomionej na platformie Azure.

Enter-AzVM -Name MyVM1 -ResourceGroupName MyResourceGroup -Credential (Get-Credential)

Możesz również przejść do VirtualMachines katalogu najpierw i uruchomić Enter-AzVM w następujący sposób:

Get-Item MyVM1 | Enter-AzVM -Credential (Get-Credential)

Odnajdywanie aplikacji internetowych

Wprowadzając do WebApps katalogu, możesz łatwo nawigować po zasobach aplikacji internetowych

dir .\WebApps\
# You will see output similar to the following:
    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
# You will see output similar to the following:
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
# You will see output similar to the following:
    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

Protokół SSH

Aby uwierzytelnić się na serwerach lub maszynach wirtualnych przy użyciu protokołu SSH, wygeneruj parę kluczy publicznych w Cloud Shell i opublikuj klucz authorized_keys publiczny na maszynie zdalnej, na przykład /home/user/.ssh/authorized_keys.

Uwaga

Możesz utworzyć prywatne klucze publiczne SSH przy użyciu polecenia ssh-keygen i opublikować $env:USERPROFILE\.ssh je w Cloud Shell.

Używanie protokołu SSH

Postępuj zgodnie z instrukcjami tutaj, aby utworzyć nową konfigurację maszyny wirtualnej przy użyciu poleceń cmdlet Azure PowerShell. Przed wywołaniem metody w New-AzVM celu rozpoczęcia wdrażania dodaj klucz publiczny SSH do konfiguracji maszyny wirtualnej. Nowo utworzona maszyna wirtualna będzie zawierać klucz publiczny w ~\.ssh\authorized_keys lokalizacji, co spowoduje włączenie sesji SSH bez poświadczeń dla maszyny wirtualnej.

# 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

Wyświetlanie listy dostępnych poleceń

W obszarze Azure dysku wpisz Get-AzCommand polecenie , aby uzyskać polecenia platformy Azure specyficzne dla kontekstu.

Alternatywnie możesz zawsze użyć Get-Command *az* -Module Az.* polecenia , aby dowiedzieć się dostępnych poleceń platformy Azure.

Instalowanie modułów niestandardowych

Możesz uruchomić polecenie Install-Module , aby zainstalować moduły z Galeria programu PowerShell.

Get-Help

Wpisz Get-Help , aby uzyskać informacje o programie PowerShell w usłudze Azure Cloud Shell.

Get-Help

W przypadku określonego polecenia nadal można wykonać Get-Help polecenie cmdlet .

Get-Help Get-AzVM

Przechowywanie danych przy użyciu Azure Files

Możesz utworzyć skrypt, np helloworld.ps1. , i zapisać go w clouddrive celu użycia go w sesjach powłoki.

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!

Następnym razem, gdy używasz programu PowerShell w Cloud Shell, helloworld.ps1 plik będzie istniał w $HOME\clouddrive katalogu, który instaluje udział Azure Files.

Korzystanie z profilu niestandardowego

Środowisko programu PowerShell można dostosować, tworząc profile programu PowerShell — profile.ps1 (lub Microsoft.PowerShell_profile.ps1). Zapisz go w obszarze $profile.CurrentUserAllHosts (lub $profile.CurrentUserCurrentHost), aby można go było załadować w każdym programie PowerShell w Cloud Shell sesji.

Aby dowiedzieć się, jak utworzyć profil, zobacz About Profiles (Informacje o profilach).

Korzystanie z usługi Git

Aby sklonować repozytorium Git w Cloud Shell, należy utworzyć osobisty token dostępu i użyć go jako nazwy użytkownika. Po utworzeniu tokenu sklonuj repozytorium w następujący sposób:

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

Wyjdź z powłoki:

Wpisz , exit aby zakończyć sesję.