Rozszerzenie niestandardowego skryptu dla systemu Windows
Rozszerzenie niestandardowego skryptu pobiera i uruchamia skrypty na maszynach wirtualnych platformy Azure. To rozszerzenie służy do konfigurowania po wdrożeniu, instalacji oprogramowania lub innego zadania konfiguracji lub zarządzania. Skrypty można pobrać z usługi Azure Storage lub GitHub albo udostępnić je w witrynie Azure Portal w środowisku uruchomieniowym rozszerzenia.
Rozszerzenie niestandardowego skryptu integruje się z szablonami usługi Azure Resource Manager. Można go również uruchomić przy użyciu interfejsu wiersza polecenia platformy Azure, programu Azure PowerShell, witryny Azure Portal lub interfejsu API REST usługi Azure Virtual Machines.
W tym artykule opisano sposób używania rozszerzenia niestandardowego skryptu przy użyciu modułu Azure PowerShell i szablonów usługi Azure Resource Manager. Zawiera on również kroki rozwiązywania problemów dla systemów Windows.
Wymagania wstępne
Uwaga
Nie używaj rozszerzenia niestandardowego skryptu do uruchamiania Update-AzVM
z tą samą maszyną wirtualną co jej parametr. Rozszerzenie będzie czekać na siebie.
Obsługiwane systemy operacyjne Windows
System operacyjny Windows | x64 |
---|---|
Windows 10 | Obsługiwane |
Windows 11 | Obsługiwane |
Windows Server 2008 SP2 | Obsługiwane |
Windows Server 2008 R2 | Obsługiwane |
Windows Server 2012 | Obsługiwane |
Windows Server 2012 R2 | Obsługiwane |
Windows Server 2016 | Obsługiwane |
Windows Server 2016 Core | Obsługiwane |
Windows Server 2019 | Obsługiwane |
Windows Server 2019 Core | Obsługiwane |
Windows Server 2022 | Obsługiwane |
Windows Server 2022 Core | Obsługiwane |
Lokalizacja skryptu
Możesz ustawić rozszerzenie tak, aby używało poświadczeń usługi Azure Blob Storage w celu uzyskania dostępu do usługi Azure Blob Storage. Lokalizacja skryptu może znajdować się w dowolnym miejscu, jeśli maszyna wirtualna może kierować do tego punktu końcowego, na przykład do usługi GitHub lub wewnętrznego serwera plików.
Łączność z Internetem
Aby pobrać skrypt zewnętrznie, na przykład z usługi GitHub lub Usługi Azure Storage, musisz otworzyć inne porty zapory lub sieciowej grupy zabezpieczeń. Jeśli na przykład skrypt znajduje się w usłudze Azure Storage, możesz zezwolić na dostęp przy użyciu tagów usługi Azure NSG dla usługi Storage.
Rozszerzenie niestandardowego skryptu nie ma możliwości obejścia weryfikacji certyfikatu. W przypadku pobierania z zabezpieczonej lokalizacji z certyfikatem z podpisem własnym mogą wystąpić błędy, takie jak Certyfikat zdalny jest nieprawidłowy zgodnie z procedurą weryfikacji. Upewnij się, że certyfikat jest poprawnie zainstalowany w magazynie zaufanych głównych urzędów certyfikacji na maszynie wirtualnej.
Jeśli skrypt znajduje się na serwerze lokalnym, może być konieczne otwarcie innych zapór lub portów sieciowej grupy zabezpieczeń.
Wskazówki
- Dane wyjściowe są ograniczone do ostatnich 4096 bajtów.
- Prawidłowe znaki ucieczki pomogą upewnić się, że ciągi są poprawnie analizowane. Na przykład zawsze potrzebne są dwa ukośniki odwrotne, aby uniknąć pojedynczego ukośnika odwrotnego literału podczas pracy ze ścieżkami plików. Przykład:
{"commandToExecute": "C:\\Windows\\System32\\systeminfo.exe >> D:\\test.txt"}
- Najwyższy odsetek awarii dotyczących tego rozszerzenia jest spowodowany błędami składni w skrypcie. Sprawdź, czy skrypt działa bez błędów. Umieść więcej logowania do skryptu, aby ułatwić znajdowanie błędów.
- Pisz skrypty idempotentne, aby w razie ich ponownego uruchomienia przez przypadek więcej niż jeden raz nie nastąpiły zmiany systemu.
- Upewnij się, że skrypty nie wymagają udziału użytkownika w trakcie działania.
- Dozwolone jest działanie skryptu przez 90 minut. Każdy dłuższy czas spowoduje niepowodzenie aprowizacji rozszerzenia.
- Nie umieszczaj w skrypcie operacji ponownego uruchamiania. Ta akcja powoduje problemy z innymi zainstalowanymi rozszerzeniami, a rozszerzenie nie będzie kontynuowane po ponownym uruchomieniu.
- Jeśli masz skrypt, który powoduje ponowne uruchomienie przed zainstalowaniem aplikacji i uruchomieniem skryptów, zaplanuj ponowne uruchomienie przy użyciu zadania Windows Scheduled Task lub przy użyciu narzędzi, takich jak rozszerzenia DSC, Chef lub Puppet.
- Nie uruchamiaj skryptu, który powoduje zatrzymanie lub aktualizację agenta maszyny wirtualnej. Może to pozostawić rozszerzenie w stanie przejściowym i prowadzić do przekroczenia limitu czasu.
- Rozszerzenie uruchomi skrypt tylko raz. Jeśli chcesz uruchamiać skrypt przy każdym rozruchu, użyj rozszerzenia w celu utworzenia zaplanowanego zadania systemu Windows.
- Jeśli chcesz zaplanować czas uruchomienia skryptu, użyj rozszerzenia w celu utworzenia zaplanowanego zadania systemu Windows.
- W trakcie działania skryptu będziesz widzieć tylko stan przechodzenie z witryny Azure Portal lub interfejsu wiersza polecenia Azure. Jeśli potrzebujesz częstszych aktualizacji stanu działającego skryptu, musisz utworzyć własne rozwiązanie.
- Niestandardowe rozszerzenie skryptu nie obsługuje natywnie serwerów proxy. Jednak możesz w swoim skrypcie użyć narzędzia do transferu plików, np. Invoke-WebRequest, które obsługuje serwery proxy w ramach tego skryptu, takiego jak Curl.
- Pamiętaj, że skrypty lub polecenia mogą polegać na lokalizacjach katalogów innych niż domyślne. Przygotuj logikę obsługującą taką sytuację.
- Upewnij się, że nie masz żadnego ustawienia niestandardowego w kluczu
HKLM\SOFTWARE\Microsoft\Command Processor\AutoRun
rejestru (szczegółowe tutaj). Spowoduje to wyzwolenie w fazie instalacji lub włączenia rozszerzenia niestandardowego skryptu i spowodowanie błędu, takiego jak'XYZ is not recognized as an internal or external command, operable program or batch file'
. - Rozszerzenie niestandardowego skryptu jest uruchamiane na koncie
LocalSystem
. - Jeśli planujesz używać właściwości
storageAccountName
istorageAccountKey
, te właściwości muszą być sortowane w plikuprotectedSettings
. - Do maszyny wirtualnej można zastosować tylko jedną wersję rozszerzenia. Aby uruchomić drugi skrypt niestandardowy, zaktualizuj istniejące rozszerzenie przy użyciu nowej konfiguracji. Alternatywnie możesz usunąć rozszerzenie niestandardowego skryptu i ponownie zastosować go za pomocą zaktualizowanego skryptu.
Schemat rozszerzenia
Konfiguracja rozszerzenia niestandardowego skryptu określa elementy, takie jak lokalizacja skryptu i polecenie do uruchomienia. Tę konfigurację można przechowywać w plikach konfiguracji, określić ją w wierszu polecenia lub określić w szablonie usługi Azure Resource Manager.
Poufne dane można przechowywać w chronionej konfiguracji, która jest szyfrowana i odszyfrowywane tylko wewnątrz maszyny wirtualnej. Konfiguracja chroniona jest przydatna, gdy polecenie wykonywania zawiera wpisy tajne, takie jak hasło lub odwołanie do pliku sygnatury dostępu współdzielonego (SAS). Oto przykład:
{
"apiVersion": "2018-06-01",
"type": "Microsoft.Compute/virtualMachines/extensions",
"name": "virtualMachineName/config-app",
"location": "[resourceGroup().location]",
"dependsOn": [
"[concat('Microsoft.Compute/virtualMachines/', variables('vmName'),copyindex())]",
"[variables('musicstoresqlName')]"
],
"tags": {
"displayName": "config-app"
},
"properties": {
"publisher": "Microsoft.Compute",
"type": "CustomScriptExtension",
"typeHandlerVersion": "1.10",
"autoUpgradeMinorVersion": true,
"settings": {
"timestamp":123456789
},
"protectedSettings": {
"commandToExecute": "myExecutionCommand",
"storageAccountName": "myStorageAccountName",
"storageAccountKey": "myStorageAccountKey",
"managedIdentity" : {},
"fileUris": [
"script location"
]
}
}
}
Uwaga
Właściwość managedIdentity
nie może być używana w połączeniu z właściwością storageAccountName
or storageAccountKey
.
Na maszynie wirtualnej można zainstalować tylko jedną wersję rozszerzenia. Określanie skryptu niestandardowego dwa razy w tym samym szablonie usługi Azure Resource Manager dla tej samej maszyny wirtualnej kończy się niepowodzeniem.
Tego schematu można użyć wewnątrz zasobu maszyny wirtualnej lub jako zasobu autonomicznego. Jeśli to rozszerzenie jest używane jako zasób autonomiczny w szablonie usługi Azure Resource Manager, nazwa zasobu musi być w formacie virtualMachineName/extensionName.
Wartości właściwości
Nazwisko | Wartość lub przykład | Typ danych |
---|---|---|
apiVersion | 2015-06-15 |
data |
wydawca | Microsoft.Compute |
string |
type | CustomScriptExtension |
string |
typeHandlerVersion | 1.10 |
int |
fileUris | https://raw.githubusercontent.com/Microsoft/dotnet-core-sample-templates/master/dotnet-core-music-windows/scripts/configure-music-app.ps1 |
tablica |
timestamp | 123456789 |
32-bitowa liczba całkowita |
commandToExecute | powershell -ExecutionPolicy Unrestricted -File configure-music-app.ps1 |
string |
storageAccountName | examplestorageacct |
string |
storageAccountKey | TmJK/1N3AbAZ3q/+hOXoi/l73zOqsaxXDhqa9Y83/v5UpXQp2DQIBuv2Tifp60cE/OaHsJZmQZ7teQfczQj8hg== |
string |
managedIdentity | { } lub lub { "clientId": "31b403aa-c364-4240-a7ff-d85fb6cd7232" } { "objectId": "12dd289c-0583-46e5-b9b4-115d5c19ef4b" } |
Obiekt JSON |
Uwaga
Te nazwy właściwości są uwzględniane w wielkości liter. Aby uniknąć problemów z wdrażaniem, użyj nazw, jak pokazano tutaj.
Szczegóły wartości właściwości
Właściwości | Opcjonalne lub wymagane | Szczegóły |
---|---|---|
fileUris | Opcjonalnie | Adresy URL plików do pobrania. Jeśli na przykład adresy URL są poufne, jeśli zawierają klucze, to pole powinno być określone w pliku protectedSettings . |
commandToExecute | Wymagania | Skrypt punktu wejścia do uruchomienia. Użyj tej właściwości, jeśli polecenie zawiera wpisy tajne, takie jak hasła lub jeśli identyfikatory URI pliku są poufne. |
timestamp | Opcjonalnie | Zmień tę wartość tylko, aby wyzwolić ponowne uruchomienie skryptu. Dowolna wartość całkowita jest akceptowalna, o ile różni się od poprzedniej wartości. |
storageAccountName | Opcjonalnie | Nazwa konta magazynu. Jeśli określisz poświadczenia magazynu, wszystkie fileUris wartości muszą być adresami URL dla obiektów blob platformy Azure. |
storageAccountKey | Opcjonalnie | Klucz dostępu konta magazynu. |
managedIdentity | Opcjonalnie | Tożsamość zarządzana do pobierania plików. Prawidłowe wartości to clientId (opcjonalnie, ciąg), czyli identyfikator klienta tożsamości zarządzanej oraz objectId (opcjonalnie, ciąg), czyli identyfikator obiektu tożsamości zarządzanej. |
Ustawienia publiczne są wysyłane w postaci zwykłego tekstu do maszyny wirtualnej, na której jest uruchamiany skrypt. Ustawienia chronione są szyfrowane za pośrednictwem klucza znanego tylko dla platformy Azure i maszyny wirtualnej. Ustawienia są zapisywane na maszynie wirtualnej podczas ich wysyłania. Oznacza to, że jeśli ustawienia zostały zaszyfrowane, są one zapisywane jako zaszyfrowane na maszynie wirtualnej. Certyfikat używany do odszyfrowywania zaszyfrowanych wartości jest przechowywany na maszynie wirtualnej. Certyfikat jest również używany do odszyfrowywania ustawień, w razie potrzeby, w czasie wykonywania.
Używanie ustawień publicznych może być przydatne do debugowania, ale zalecamy używanie ustawień chronionych.
Następujące wartości można ustawić w ustawieniach publicznych lub chronionych. Rozszerzenie odrzuca dowolną konfigurację, w której te wartości są ustawiane zarówno w ustawieniach publicznych, jak i chronionych.
commandToExecute
fileUris
Właściwość: managedIdentity
Uwaga
Ta właściwość musi być określona tylko w ustawieniach chronionych.
Rozszerzenie niestandardowego skryptu w wersji 1.10 lub nowszej obsługuje tożsamości zarządzane do pobierania plików z adresów URL podanych w ustawieniu fileUris
. Właściwość umożliwia rozszerzenie niestandardowego skryptu uzyskiwanie dostępu do prywatnych obiektów blob lub kontenerów usługi Azure Storage bez konieczności przekazywania wpisów tajnych, takich jak tokeny SAS lub klucze konta magazynu.
Aby użyć tej funkcji, dodaj tożsamość przypisaną przez system lub przypisaną przez użytkownika do maszyny wirtualnej lub zestawu skalowania maszyn wirtualnych, w którym jest uruchamiane rozszerzenie niestandardowego skryptu. Następnie przyznaj tożsamości zarządzanej dostęp do kontenera lub obiektu blob usługi Azure Storage.
Aby użyć tożsamości przypisanej przez system na docelowej maszynie wirtualnej lub zestawie skalowania maszyn wirtualnych, ustaw na managedidentity
pusty obiekt JSON.
{
"fileUris": ["https://mystorage.blob.core.windows.net/privatecontainer/script1.ps1"],
"commandToExecute": "powershell.exe script1.ps1",
"managedIdentity" : {}
}
Aby użyć tożsamości przypisanej przez użytkownika na docelowej maszynie wirtualnej lub zestawie skalowania maszyn wirtualnych, skonfiguruj managedidentity
identyfikator klienta lub identyfikator obiektu tożsamości zarządzanej.
{
"fileUris": ["https://mystorage.blob.core.windows.net/privatecontainer/script1.ps1"],
"commandToExecute": "powershell.exe script1.ps1",
"managedIdentity" : { "clientId": "31b403aa-c364-4240-a7ff-d85fb6cd7232" }
}
{
"fileUris": ["https://mystorage.blob.core.windows.net/privatecontainer/script1.ps1"],
"commandToExecute": "powershell.exe script1.ps1",
"managedIdentity" : { "objectId": "12dd289c-0583-46e5-b9b4-115d5c19ef4b" }
}
Uwaga
Właściwość managedIdentity
nie może być używana w połączeniu z właściwością storageAccountName
or storageAccountKey
.
Wdrażanie na podstawie szablonu
Rozszerzenia maszyn wirtualnych platformy Azure można wdrożyć przy użyciu szablonów usługi Azure Resource Manager. Schemat JSON opisany w poprzedniej sekcji może służyć w szablonie usługi Azure Resource Manager do uruchamiania rozszerzenia niestandardowego skryptu podczas wdrażania szablonu. W poniższych przykładach pokazano, jak używać rozszerzenia niestandardowego skryptu:
- Wdrażanie rozszerzeń maszyn wirtualnych przy użyciu szablonów usługi Azure Resource Manager
- Wdrażanie aplikacji dwuwarstwowej w systemach Windows i Azure SQL Database
Wdrażanie przy użyciu programu PowerShell
Możesz użyć Set-AzVMCustomScriptExtension
polecenia , aby dodać rozszerzenie niestandardowego skryptu do istniejącej maszyny wirtualnej. Aby uzyskać więcej informacji, zobacz Set-AzVMCustomScriptExtension.
Set-AzVMCustomScriptExtension -ResourceGroupName <resourceGroupName> `
-VMName <vmName> `
-Location myLocation `
-FileUri <fileUrl> `
-Run 'myScript.ps1' `
-Name DemoScriptExtension
Przykłady
Używanie wielu skryptów
W tym przykładzie użyto trzech skryptów do skompilowania serwera. Właściwość commandToExecute
wywołuje pierwszy skrypt. Następnie masz opcje, jak są wywoływane inne. Na przykład możesz mieć skrypt potencjalnego klienta, który kontroluje wykonywanie, z odpowiednią obsługą błędów, rejestrowaniem i zarządzaniem stanem. Skrypty są pobierane na komputer lokalny do uruchomienia.
Na przykład w pliku 1_Add_Tools.ps1 wywołasz polecenie 2_Add_Features.ps1 , dodając .\2_Add_Features.ps1
do skryptu. Powtórz ten proces dla innych skryptów zdefiniowanych w pliku $settings
.
$fileUri = @("https://xxxxxxx.blob.core.windows.net/buildServer1/1_Add_Tools.ps1",
"https://xxxxxxx.blob.core.windows.net/buildServer1/2_Add_Features.ps1",
"https://xxxxxxx.blob.core.windows.net/buildServer1/3_CompleteInstall.ps1")
$settings = @{"fileUris" = $fileUri};
$storageAcctName = "xxxxxxx"
$storageKey = "1234ABCD"
$protectedSettings = @{"storageAccountName" = $storageAcctName; "storageAccountKey" = $storageKey; "commandToExecute" = "powershell -ExecutionPolicy Unrestricted -File 1_Add_Tools.ps1"};
#run command
Set-AzVMExtension -ResourceGroupName <resourceGroupName> `
-Location <locationName> `
-VMName <vmName> `
-Name "buildserver1" `
-Publisher "Microsoft.Compute" `
-ExtensionType "CustomScriptExtension" `
-TypeHandlerVersion "1.10" `
-Settings $settings `
-ProtectedSettings $protectedSettings;
Uruchamianie skryptów z udziału lokalnego
W tym przykładzie możesz chcieć użyć lokalnego serwera bloku komunikatów (SMB) dla lokalizacji skryptu. Następnie nie trzeba podawać żadnych innych ustawień, z wyjątkiem commandToExecute
.
$protectedSettings = @{"commandToExecute" = "powershell -ExecutionPolicy Unrestricted -File \\filesvr\build\serverUpdate1.ps1"};
Set-AzVMExtension -ResourceGroupName <resourceGroupName> `
-Location <locationName> `
-VMName <vmName> `
-Name "serverUpdate"
-Publisher "Microsoft.Compute" `
-ExtensionType "CustomScriptExtension" `
-TypeHandlerVersion "1.10" `
-ProtectedSettings $protectedSettings
Uruchamianie niestandardowego skryptu więcej niż raz przy użyciu interfejsu wiersza polecenia
Procedura obsługi rozszerzenia niestandardowego skryptu uniemożliwia ponowne uruchomienie skryptu, jeśli zostały przekazane dokładnie te same ustawienia. To zachowanie zapobiega przypadkowemu ponownemu uruchamianiu, co może powodować nieoczekiwane zachowania, jeśli skrypt nie jest idempotentny. Aby potwierdzić, czy program obsługi zablokował ponowne uruchomienie, spójrz na C:\WindowsAzure\Logs\Plugins\Microsoft.Compute.CustomScriptExtension\<HandlerVersion>\CustomScriptHandler.log*
. Wyszukaj ostrzeżenie podobne do następującego:
Current sequence number, <SequenceNumber>, is not greater than the sequence number
of the most recently executed configuration. Exiting...
Jeśli chcesz uruchomić rozszerzenie niestandardowego skryptu więcej niż raz, możesz to zrobić tylko w następujących warunkach:
- Parametr rozszerzenia
Name
jest taki sam jak poprzednie wdrożenie rozszerzenia. - Zaktualizowano konfigurację. Do polecenia można dodać właściwość dynamiczną, taką jak sygnatura czasowa. Jeśli program obsługi wykryje zmianę w ustawieniach konfiguracji, uważa, że zmiana jako jawne pragnienie ponownego uruchomienia skryptu.
Alternatywnie można ustawić właściwość ForceUpdateTag na true
wartość .
Korzystanie z wywołania WebRequest
Jeśli używasz polecenia Invoke-WebRequest w skryscie, musisz określić parametr -UseBasicParsing
. Jeśli nie określisz parametru, podczas sprawdzania szczegółowego stanu zostanie wyświetlony następujący błąd:
The response content cannot be parsed because the Internet Explorer engine
is not available, or Internet Explorer's first-launch configuration
is not complete. Specify the UseBasicParsing parameter and try again.
Virtual Machine Scale Sets
Jeśli wdrożysz rozszerzenie niestandardowego skryptu z witryny Azure Portal, nie masz kontroli nad wygaśnięciem tokenu SAS na potrzeby uzyskiwania dostępu do skryptu na koncie magazynu. Początkowe wdrożenie działa, ale gdy token SAS konta magazynu wygaśnie, każda kolejna operacja skalowania kończy się niepowodzeniem, ponieważ rozszerzenie niestandardowego skryptu nie może już uzyskać dostępu do konta magazynu.
Zalecamy użycie programu PowerShell, interfejsu wiersza polecenia platformy Azure lub szablonu usługi Azure Resource Manager podczas wdrażania rozszerzenia niestandardowego skryptu w zestawie skalowania maszyn wirtualnych. W ten sposób możesz użyć tożsamości zarządzanej lub mieć bezpośrednią kontrolę nad wygaśnięciem tokenu SAS na potrzeby uzyskiwania dostępu do skryptu na koncie magazynu tak długo, jak to konieczne.
Rozwiązywanie problemów i pomoc techniczna
Dane dotyczące stanu wdrożeń rozszerzeń można pobrać z witryny Azure Portal i przy użyciu modułu Azure PowerShell. Aby wyświetlić stan wdrożenia rozszerzeń dla maszyny wirtualnej, uruchom następujące polecenie:
Get-AzVMExtension -ResourceGroupName <resourceGroupName> `
-VMName <vmName> -Name myExtensionName
Dane wyjściowe rozszerzenia są rejestrowane w plikach znajdujących się w następującym folderze na docelowej maszynie wirtualnej:
C:\WindowsAzure\Logs\Plugins\Microsoft.Compute.CustomScriptExtension
Określone pliki są pobierane do następującego folderu na docelowej maszynie wirtualnej:
C:\Packages\Plugins\Microsoft.Compute.CustomScriptExtension\1.*\Downloads\<n>
W poprzedniej ścieżce jest liczbą całkowitą dziesiętną, <n>
która może ulec zmianie między wykonaniami rozszerzenia. Wartość jest zgodna 1.*
z rzeczywistą, bieżącą typeHandlerVersion
wartością rozszerzenia. Na przykład rzeczywisty katalog może mieć wartość C:\Packages\Plugins\Microsoft.Compute.CustomScriptExtension\1.8\Downloads\2
.
Po uruchomieniu commandToExecute
polecenia rozszerzenie ustawia ten katalog, na przykład ...\Downloads\2
, jako bieżący katalog roboczy. Ten proces umożliwia używanie ścieżek względnych do lokalizowania plików pobranych przy użyciu fileURIs
właściwości . Oto przykłady pobranych plików:
Identyfikator URI w fileUris |
Względna lokalizacja pobierania | Bezwzględna lokalizacja pobierania |
---|---|---|
https://someAcct.blob.core.windows.net/aContainer/scripts/myscript.ps1 |
./scripts/myscript.ps1 |
C:\Packages\Plugins\Microsoft.Compute.CustomScriptExtension\1.8\Downloads\2\scripts\myscript.ps1 |
https://someAcct.blob.core.windows.net/aContainer/topLevel.ps1 |
./topLevel.ps1 |
C:\Packages\Plugins\Microsoft.Compute.CustomScriptExtension\1.8\Downloads\2\topLevel.ps1 |
Ścieżki katalogów bezwzględnych zmieniają się w okresie istnienia maszyny wirtualnej, ale nie w ramach pojedynczego wykonania rozszerzenia niestandardowego skryptu.
Ponieważ bezwzględna ścieżka pobierania może się różnić w czasie, lepiej jest wybrać względne ścieżki skryptu/pliku w commandToExecute
ciągu, jeśli to możliwe. Na przykład:
"commandToExecute": "powershell.exe . . . -File \"./scripts/myscript.ps1\""
Informacje o ścieżce po pierwszym segmencie identyfikatora URI są przechowywane dla plików pobranych przy użyciu fileUris
listy właściwości. Jak pokazano w poprzedniej tabeli, pobrane pliki są mapowane do podkatalogów pobierania w celu odzwierciedlenia fileUris
struktury wartości.
Pomoc techniczna
Jeśli potrzebujesz pomocy dotyczącej jakiejkolwiek części tego artykułu, skontaktuj się z ekspertami platformy Azure w pomocy technicznej społeczności platformy Azure.
Aby zgłosić zdarzenie pomoc techniczna platformy Azure, przejdź do witryny pomoc techniczna platformy Azure i wybierz pozycję Uzyskaj pomoc techniczną.
Aby uzyskać informacje na temat korzystania z pomoc techniczna platformy Azure, zapoznaj się z często zadawanymi pytaniami dotyczącymi usługi Microsoft pomoc techniczna platformy Azure.