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.
Juttatások
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
Támogatott Windows operációs rendszerek
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 |
Windows Server 2025 | Támogatott |
Windows Server 2025 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. Ez lehetővé teszi, hogy a bővítmény áttűnési állapotban legyen, ami időtúllépéshez vezethet.
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
Feljegyzés
Attól függően, hogy milyen modalitást használ a végrehajtáshoz, szükség lehet némi menekülésre. Ha például egy PowerShell-munkamenetben hajtja végre a parancsot, a szkriptfájl elérési útjának idézőjelekkel kell rendelkeznie.
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.
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ó.
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
.Győződjön meg arról, hogy nincs egyéni beállítás a beállításkulcsban
HKLM\SOFTWARE\Microsoft\Command Processor\AutoRun
(itt részletesen). Ez a RunCommand bővítmény telepítése vagy engedélyezése során aktiválhatja a fázisokat, és olyan hibát okozhat, mint " Az XYZ nem ismerhető fel belső vagy külső parancsként, kezelhető programként vagy kötegelt fájlként".
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.