Schnellstart für PowerShell in Azure Cloud Shell
Dieses Dokument erläutert die Verwendung von PowerShell in Cloud Shell im Azure-Portal.
Als PowerShell-Oberfläche in Azure Cloud Shell wird jetzt PowerShell 7.2 in einer Linux-Umgebung ausgeführt. Es gibt Unterschiede in der PowerShell-Benutzeroberfläche in Cloud Shell im Vergleich zu Windows PowerShell.
Beim Dateisystem unter Linux wird die Groß-/Kleinschreibung beachtet. Windows sieht file.txt
und FILE.txt
als die gleiche Datei an. Unter Linux gelten sie als unterschiedliche Dateien. Bei einer Tab-Vervollständigung im Dateisystem muss die Groß- und Kleinschreibung richtig verwendet werden. Bei PowerShell-spezifischen Oberflächenelementen (z. B. Befehlszeilenergänzung für die Namen von Cmdlets, Parametern und Werten) wird die Groß- und Kleinschreibung nicht berücksichtigt.
Eine ausführliche Liste der Unterschiede finden Sie unter PowerShell-Unterschiede auf Nicht-Windows-Plattformen.
Starten von Cloud Shell
Wählen Sie im oberen Navigationsbereich des Azure-Portals die Schaltfläche Cloud Shell aus.
Wählen Sie die PowerShell-Umgebung in der Dropdownliste aus, und Sie befinden sich auf dem Azure-Laufwerk
(Azure:)
.
Ausführen von PowerShell-Befehlen
Führen Sie reguläre PowerShell-Befehle wie in der Cloud Shell aus. Beispiel:
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
Interagieren mit virtuellen Computern
Sie finden all Ihre virtuellen Computer unter dem aktuellen Abonnement über das VirtualMachines
-Verzeichnis.
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
Aufrufen von PowerShell-Skripts zwischen virtuellen Remotecomputern
Warnung
Weitere Informationen finden Sie unter Problembehandlung bei der Remoteverwaltung von virtuellen Azure-Computern.
Angenommen, Sie verfügen über einen virtuellen Computer, MyVM1, dann verwenden wir Invoke-AzVMCommand
, um einen PowerShell-Skriptblock auf dem Remotecomputer aufzurufen.
Enable-AzVMPSRemoting -Name MyVM1 -ResourceGroupname MyResourceGroup
Invoke-AzVMCommand -Name MyVM1 -ResourceGroupName MyResourceGroup -Scriptblock {Get-ComputerInfo} -Credential (Get-Credential)
Sie können auch zuerst zum Verzeichnis „VirtualMachines“ navigieren und Invoke-AzVMCommand
wie folgt ausführen.
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 :
...
Interaktives Anmelden auf einem virtuellen Remotecomputer
Mithilfe von Enter-AzVM
können Sie sich interaktiv auf einem virtuellen Computer anmelden, der in Azure ausgeführt wird.
Enter-AzVM -Name MyVM1 -ResourceGroupName MyResourceGroup -Credential (Get-Credential)
Sie können auch zuerst zum Verzeichnis VirtualMachines
navigieren und Enter-AzVM
wie folgt ausführen:
Get-Item MyVM1 | Enter-AzVM -Credential (Get-Credential)
Erkunden von WebApps
Im Verzeichnis WebApps
können Sie ganz einfach durch Ihre Web-App-Ressourcen navigieren.
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
SSH
Generieren Sie zum Authentifizieren für Server oder VMs per SSH das Paar aus einem öffentlichen und einem privaten Schlüssel in Cloud Shell, und veröffentlichen Sie den öffentlichen Schlüssel auf dem Remotecomputer unter authorized_keys
, z.B. als /home/user/.ssh/authorized_keys
.
Hinweis
Sie können private/öffentliche SSH-Schlüssel mit ssh-keygen
erstellen und für $env:USERPROFILE\.ssh
in Cloud Shell veröffentlichen.
Verwenden von SSH
Befolgen Sie die Anleitung hier, um eine neue VM-Konfiguration mit Azure PowerShell-Cmdlets zu erstellen.
Fügen Sie der VM-Konfiguration vor dem Aufrufen von New-AzVM
zum Starten der Bereitstellung den öffentlichen SSH-Schlüssel hinzu. Die neu erstellte VM enthält den öffentlichen Schlüssel unter ~\.ssh\authorized_keys
, um für die VM eine SSH-Sitzung ohne Anmeldeinformationen zu ermöglichen.
# 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
Auflisten verfügbarer Befehle
Geben Sie unter dem Laufwerk Azure
die Zeichenfolge Get-AzCommand
ein, um kontextabhängige Azure-Befehle zu erhalten.
Alternativ können Sie immer Get-Command *az* -Module Az.*
verwenden, um die verfügbaren Azure-Befehle zu ermitteln.
Installieren von benutzerdefinierten Modulen
Sie können Install-Module
ausführen, um Module aus dem PowerShell-Katalog zu installieren.
Get-Help
Geben Sie Get-Help
ein, um Informationen zu PowerShell in Azure Cloud Shell abzurufen.
Get-Help
Für einen bestimmten Befehl können Sie weiterhin Get-Help
gefolgt von einem Cmdlet ausführen.
Get-Help Get-AzVM
Verwenden von Azure Files zum Speichern Ihrer Daten
Sie können ein Skript erstellen (beispielsweise helloworld.ps1
) und es in Ihrem clouddrive
speichern, um es für verschiedene Shellsitzungen zu verwenden.
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!
Wenn Sie PowerShell das nächste Mal in Cloud Shell verwenden, ist die Datei helloworld.ps1
im Verzeichnis $HOME\clouddrive
enthalten, der Ihre Azure Files-Freigabe einbindet.
Verwenden benutzerdefinierter Profile
Sie können die PowerShell-Umgebung anpassen, indem Sie PowerShell-Profile – profile.ps1
(oder Microsoft.PowerShell_profile.ps1
) – erstellen. Speichern Sie es unter $profile.CurrentUserAllHosts
(oder $profile.CurrentUserCurrentHost
), damit es in jeder PowerShell in Cloud Shell-Sitzungen geladen werden kann.
Informationen zum Erstellen von Profilen finden Sie unter Informationen zu Profilen.
Verwenden von Git
Wenn Sie in Cloud Shell ein Git-Repository klonen möchten, müssen Sie ein persönliches Zugriffstoken erstellen und es als Benutzernamen verwenden. Wenn Sie über das Token verfügen, gehen Sie wie folgt vor, um das Repository zu klonen:
git clone https://<your-access-token>@github.com/username/repo.git
Beenden Sie die Shell:
Geben Sie exit
ein, um die Sitzung zu beenden.