Megosztás a következőn keresztül:


Szkriptek futtatása Windows rendszerű virtuális gépen parancsfuttatási műveletek használatával

A Parancs futtatása funkció a virtuálisgép-ügynököt használja PowerShell-szkriptek Futtatásához egy Azure Windows rendszerű virtuális gépen. Ezeket a szkripteket a gépek vagy alkalmazások általános kezelésére használhatja. Segíthetnek a virtuális gépek hozzáférésével és hálózatával kapcsolatos problémák gyors diagnosztizálásában és elhárításában, valamint a virtuális gép megfelelő állapotba helyezésében.

Előnyök

A virtuális gépek többféleképpen is elérhetők. A Run Command távolról is futtathat szkripteket a virtuális gépeken a virtuálisgép-ügynök használatával. A Futtatás parancsot az Azure Portalon, a REST API-on vagy a Windows rendszerű virtuális gépekhez készült PowerShellen keresztül használhatja.

Ez a funkció minden olyan forgatókönyvben hasznos, ahol szkriptet szeretne futtatni egy virtuális gépen. Ez az egyetlen olyan virtuális gép hibaelhárítása és szervizelése, amely nem rendelkezik rdp- vagy SSH-port nyitva a helytelen hálózati vagy rendszergazdai felhasználói konfiguráció miatt.

Előfeltételek

Windows operációs rendszer támogatott

Windows operációs rendszer x64
Windows 10 Támogatott
Windows 11 Támogatott
Windows Server 2008 SP2 Támogatott
Windows Server 2008 R2 Támogatott
Windows Server 2012 Támogatott
Windows Server 2012 R2 Támogatott
Windows Server 2016 Támogatott
Windows Server 2016 Core Támogatott
Windows Server 2019 Támogatott
Windows Server 2019 Core Támogatott
Windows Server 2022 Támogatott
Windows Server 2022 Core Támogatott

Korlátozások

Az alábbi korlátozások érvényesek parancs futtatásakor:

  • A kimenet csak az utolsó 4096 bájtra korlátozódik.
  • A szkriptek futtatásához szükséges minimális idő körülbelül 20 másodperc.
  • A szkriptek a Windowsban rendszerként futnak.
  • Egyszerre csak egy szkript futhat.
  • Az információt kérő szkriptek (interaktív mód) nem támogatottak.
  • A szkriptek futását nem lehet megszakítani.
  • Egy szkript futásideje legfeljebb 90 perc lehet. Ezután időtúllépés történik.
  • A szkript eredményeinek visszaadásához kimenő kapcsolat szükséges a virtuális gép felől.
  • Nem ajánlott olyan szkriptet futtatni, amely leállítja vagy frissíti a virtuálisgép-ügynököt. Emiatt a bővítmény átmeneti állapotban maradhat, ami időtúllépést idézhet elő.

Feljegyzés

A helyes működéshez a parancs futtatásához csatlakoztatni kell a (443-as portot) az Azure nyilvános IP-címéhez. Ha a bővítmény nem rendelkezik hozzáféréssel ezekhez a végpontokhoz, előfordulhat, hogy a szkriptek sikeresen futnak, de nem adnak vissza eredményeket. Ha blokkolja a virtuális gép forgalmát, szolgáltatáscímkék használatával engedélyezheti az Azure nyilvános IP-címeinek forgalmát a AzureCloud címke használatával.

A Parancs futtatása funkció nem működik, ha a virtuálisgép-ügynök állapota NEM ÁLL KÉSZEN. Ellenőrizze az ügynök állapotát a virtuális gép tulajdonságaiban az Azure Portalon.

Elérhető parancsok

Ez a táblázat a Windows rendszerű virtuális gépekhez elérhető parancsok listáját mutatja. A RunPowerShellScript paranccsal bármilyen egyéni szkriptet futtathat. Amikor az Azure CLI-t vagy a PowerShellt használja egy parancs futtatásához, a megadott --command-id értéknek vagy -CommandId paraméternek az alábbi értékek egyikének kell lennie. Ha olyan értéket ad meg, amely nem érhető el, a következő hibaüzenet jelenik meg:

The entity was not found in this Azure location

Név Leírás
RunPowerShellScript PowerShell-szkript futtatása
DisableNLA Hálózati szintű hitelesítés letiltása
DisableWindowsUpdate A Windows Update automatikus frissítésének letiltása
EnableAdminAccount Ellenőrzi, hogy a helyi rendszergazdai fiók le van-e tiltva, és ha igen, engedélyezi-e.
EnableEMS Az EMS engedélyezése
EnableRemotePS A távoli PowerShell engedélyezésére konfigurálja a gépet.
EnableWindowsUpdate Automatikus Windows Update-frissítések engedélyezése
IPConfig Részletes információkat jelenít meg az IP-címről, az alhálózati maszkról és az alapértelmezett átjáróról minden TCP/IP-címhez kötött adapterhez.
RDPSettings Ellenőrzi a beállításjegyzék beállításait és a tartományházirend beállításait. Szabályzatműveleteket javasol, ha a gép egy tartomány része, vagy a beállításokat alapértelmezett értékre módosítja.
ResetRDPCert Eltávolítja az RDP-figyelőhöz kapcsolódó TLS/SSL-tanúsítványt, és visszaállítja az RDP-figyelő alapértelmezett biztonságát. Ezt a szkriptet akkor használja, ha a tanúsítvánnyal kapcsolatos problémákat tapasztal.
SetRDPPort Beállítja a távoli asztali kapcsolatok alapértelmezett vagy felhasználó által megadott portszámát. Engedélyezi a tűzfalszabályokat a porthoz való bejövő hozzáféréshez.

Azure CLI

Az alábbi példa az az vm run-command paranccsal futtat egy rendszerhéjszkriptet egy Azure Windows rendszerű virtuális gépen.

# script.ps1
#   param(
#       [string]$arg1,
#       [string]$arg2
#   )
#   Write-Host This is a sample script with parameters $arg1 and $arg2

az vm run-command invoke  --command-id RunPowerShellScript --name win-vm -g my-resource-group \
    --scripts @script.ps1 --parameters "arg1=somefoo" "arg2=somebar"

Azure Portal

Lépjen egy virtuális gépre az Azure Portalon, és válassza a Futtatás parancsot a bal oldali menü Műveletek területén. Megjelenik a virtuális gépen futtatandó elérhető parancsok listája.

Parancsok listája

Válasszon egy futtatandó parancsot. Egyes parancsok opcionális vagy kötelező bemeneti paraméterekkel rendelkezhetnek. Ezeknél a parancsoknál a paraméterek szövegmezőkként jelennek meg a bemeneti értékek megadásához. Minden parancshoz megtekintheti a futtatott szkriptet a View szkript kibontásával. A RunPowerShellScript eltér a többi parancstól, mivel lehetővé teszi saját egyéni szkriptek megadását.

Feljegyzés

A beépített parancsok nem szerkeszthetők.

Miután kiválasztotta a parancsot, válassza a Futtatás lehetőséget a szkript futtatásához. A szkript befejeződése után visszaadja a kimenetet és a kimeneti ablakban megjelenő hibákat. Az alábbi képernyőképen az RDPSettings parancs futtatásából származó példakimenet látható.

Parancsszkript kimenetének futtatása

PowerShell

Az alábbi példa az Invoke-AzVMRunCommand parancsmaggal futtat egy PowerShell-szkriptet egy Azure-beli virtuális gépen. A parancsmag elvárja, hogy a paraméterben -ScriptPath hivatkozott szkript helyi legyen a parancsmag futtatásának helyéhez.

Invoke-AzVMRunCommand -ResourceGroupName '<myResourceGroup>' -Name '<myVMName>' -CommandId 'RunPowerShellScript' -ScriptPath '<pathToScript>' -Parameter @{"arg1" = "var1";"arg2" = "var2"}

Feljegyzés

A paraméterértékek csak sztring típusúak lehetnek, és szükség esetén a szkript felelős azért, hogy más típusokra konvertálja őket.

A Parancs futtatása funkcióhoz való hozzáférés korlátozása

A futtatási parancsok felsorolásához vagy egy parancs részleteinek megjelenítéséhez előfizetési Microsoft.Compute/locations/runCommands/read szintű engedély szükséges. A beépített olvasói szerepkör és a magasabb szintek rendelkeznek ezzel az engedéllyel.

A parancs futtatásához engedély Microsoft.Compute/virtualMachines/runCommands/action szükséges. A virtuálisgép-közreműködői szerepkör és a magasabb szintek rendelkeznek ezzel az engedéllyel.

A parancs futtatásához használhatja az egyik beépített szerepkört, vagy létrehozhat egy egyéni szerepkört.

Műveletfuttatási parancs windowsos hibaelhárítása

A Windows-környezetek műveletfuttatási parancsának hibaelhárítása során tekintse meg a RunCommandExtension naplófájlt, amely általában a következő könyvtárban található: C:\WindowsAzure\Logs\Plugins\Microsoft.CPlat.Core.RunCommandWindows\<version>\RunCommandExtension.log további részletekért.

Ismert problémák

Előfordulhat, hogy a műveletfuttatás parancsbővítménye nem fut a Windows-környezetben, ha a parancs foglalt karaktereket tartalmaz. Példa:

Ha a & parancs paraméterében ( például az alábbi PowerShell-szkriptben) a rendszer átadja a szimbólumot, az sikertelen lehet.

$paramm='abc&jj'
Invoke-AzVMRunCommand -ResourceGroupName AzureCloudService1 -Name test -CommandId 'RunPowerShellScript' -ScriptPath C:\data\228332902\PostAppConfig.ps1 -Parameter @{"Prefix" = $paramm}

A karakter használatával ^ lépjen ki az & argumentumból, például $paramm='abc^&jj'

Előfordulhat, hogy a Parancs futtatása bővítmény végrehajtása sikertelen lesz, ha a végrehajtandó parancs "\n" értéket tartalmaz az elérési úton, mivel az új sorként lesz kezelve. Például C:\Windows\notepad.exe tartalmazza a \n fájl elérési útját. Fontolja meg az elérési út lecserélését \n \N .

Műveletfuttatási parancs eltávolítása

Ha el kell távolítania a műveletfuttatási parancs Windows-bővítményét, tekintse meg az Azure PowerShell és a parancssori felület alábbi lépéseit:

Az alábbi eltávolítási példákban cserélje le az rgname és a vmname nevet a megfelelő erőforráscsoport- és virtuálisgép-névre.

 Invoke-AzVMRunCommand -ResourceGroupName 'rgname' -VMName 'vmname' -CommandId 'RemoveRunCommandWindowsExtension'
az vm run-command invoke  --command-id RemoveRunCommandWindowsExtension --name vmname -g rgname

Feljegyzés

Amikor ismét futtatási parancsot alkalmaz, a bővítmény automatikusan települ. A bővítményeltávolítási paranccsal elháríthatja a bővítménysel kapcsolatos problémákat.

Következő lépések

A parancsfájlok és parancsok távoli futtatásának egyéb módjairól a Windows rendszerű virtuális gépen futó szkriptek futtatása című témakörben olvashat.