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ökkel Futtatja a PowerShell-szkripteket egy Azure-beli Windows rendszerű virtuális gépen. Ezeket a szkripteket a gépek vagy alkalmazások általános kezelésére használhatja. Segítségével gyorsan diagnosztizálhatja és orvosolhatja a virtuális gépek hozzáférésével és hálózati problémáival kapcsolatos problémákat, és visszaállíthatja a virtuális gépet a megfelelő állapotba.

Előnyök

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

Ez a képesség minden olyan forgatókönyvben hasznos, ahol szkriptet szeretne futtatni egy virtuális gépen. Ez az egyetlen módszer egy olyan virtuális gép hibaelhárítására és szervizelésére, amelyen nincs megnyitva az RDP- vagy SSH-port a helytelen hálózati vagy rendszergazdai felhasználói konfiguráció miatt.

Előfeltételek

A 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 terjed ki.
  • 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ő.

Megjegyzés

A megfelelő működéshez a parancs futtatásához az Azure nyilvános IP-címéhez (443-at) kell csatlakoztatni. 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 forgalmat a virtuális gépen, szolgáltatáscímkék használatával engedélyezheti az Azure-beli nyilvános IP-címekre történő forgalmat 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 a Azure Portal.

Elérhető parancsok

Ez a táblázat a Windows rendszerű virtuális gépekhez elérhető parancsok listáját tartalmazza. 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 vagy -CommandId paraméterhez --command-id megadott értéknek 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
A PowerShellScript futtatása PowerShell-szkript futtatása
DisableNLA Hálózati szintű hitelesítés letiltása
DisableWindowsUpdate Windows Update automatikus Frissítések letiltása
EnableAdminAccount Ellenőrzi, hogy a helyi rendszergazdai fiók le van-e tiltva, és ha igen, engedélyezi azt.
EnableEMS Az EMS engedélyezése
EnableRemotePS A távoli PowerShell engedélyezésére konfigurálja a gépet.
EnableWindowsUpdate Windows Update automatikus Frissítések engedélyezése
Ipconfig Részletes információkat jelenít meg a TCP/IP-címhez kötött egyes adapterek IP-címéről, alhálózati maszkról és alapértelmezett átjáróról.
RDPSettings Ellenőrzi a beállításjegyzék beállításait és a tartományházirend-beállításokat. Szabályzatműveleteket javasol, ha a gép egy tartomány része, vagy a beállításokat alapértelmezett értékekre módosítja.
ResetRDPCert Eltávolítja az RDP-figyelőhöz kötött TLS/SSL-tanúsítványt, és visszaállítja az RDP-figyelő alapértelmezett biztonságát. Használja ezt a szkriptet, ha bármilyen problémát tapasztal a tanúsítvánnyal kapcsolatban.
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-beli 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 a Azure Portal, és válassza a Futtatás parancsot a bal oldali menü Műveletek területén. Megjelenik a virtuális gépen futtatható 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. Az egyes parancsok esetében a futtatott szkriptet a Szkript megtekintése lehetőség kibontásával tekintheti meg. A RunPowerShellScript eltér a többi parancstól, mivel lehetővé teszi saját egyéni szkriptek megadását.

Megjegyzés

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

A parancs kiválasztása után 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 előforduló hibákat. Az alábbi képernyőképen egy példakimenet látható az RDPSettings parancs futtatásából.

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 -ScriptPath paraméterben 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"}

Megjegyzés

A paraméterértékek csak sztring típusúak lehetnek, és a szkript felelős azért, hogy szükség esetén 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 listázásához vagy egy parancs részleteinek megjelenítéséhez előfizetési szinten szükséges az Microsoft.Compute/locations/runCommands/read engedély. A beépített Olvasó szerepkör és a magasabb szintek rendelkeznek ezzel az engedéllyel.

A parancs futtatásához engedélyre Microsoft.Compute/virtualMachines/runCommands/write van szükség. A Virtuális gépek közreműködője 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 további részletekért tekintse meg a RunCommandExtension naplófájlt, amely általában a következő könyvtárban C:\WindowsAzure\Logs\Plugins\Microsoft.CPlat.Core.RunCommandWindows\<version>\RunCommandExtension.log található.

Ismert problémák

Előfordulhat, hogy a műveletfuttatási parancsbővítmény végrehajtása nem sikerül a Windows-környezetben, ha a parancs foglalt karaktereket tartalmaz. Például:

Ha a & szimbólum a parancs paraméterében , például az alábbi PowerShell-szkriptben van átadva, 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 a & 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" karaktert tartalmaz az elérési úton, mivel az új sorként lesz kezelve. Például C:\Windows\notepad.exe tartalmazza a \n fájlt a fájl elérési útjában. Fontolja meg a cserét \n\N az elérési úton.

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 a 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-névre és virtuális gép nevére.

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

Megjegyzés

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

Következő lépések

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