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