Anpassat skripttillägg för WindowsCustom Script Extension for Windows

Det anpassade skript tillägget laddar ned och kör skript på virtuella Azure-datorer.The Custom Script Extension downloads and executes scripts on Azure virtual machines. Det här tillägget är användbart för konfiguration av distribution, program varu installation eller andra konfigurations-eller hanterings uppgifter.This extension is useful for post deployment configuration, software installation, or any other configuration or management tasks. Skripten kan laddas ned från Azure Storage eller GitHub, eller tillhandahållas via Azure Portal vid tilläggskörning.Scripts can be downloaded from Azure storage or GitHub, or provided to the Azure portal at extension run time. Det anpassade skript tillägget integreras med Azure Resource Manager mallar och kan köras med hjälp av Azure CLI, PowerShell, Azure Portal eller den virtuella Azure-datorn REST API.The Custom Script Extension integrates with Azure Resource Manager templates, and can be run using the Azure CLI, PowerShell, Azure portal, or the Azure Virtual Machine REST API.

Det här dokumentet beskriver hur du använder tillägget för anpassat skript med hjälp av Azure PowerShell-modulen, Azure Resource Manager mallar och information om fel söknings steg i Windows-system.This document details how to use the Custom Script Extension using the Azure PowerShell module, Azure Resource Manager templates, and details troubleshooting steps on Windows systems.

FörutsättningarPrerequisites

Anteckning

Använd inte anpassat skript tillägg för att köra Update-AzVM med samma virtuella dator som parameter, eftersom det väntar på sig själv.Do not use Custom Script Extension to run Update-AzVM with the same VM as its parameter, since it will wait on itself.

OperativsystemOperating System

Tillägget för anpassat skript för Windows kommer att köras i tillägget tillägg som stöds OSs.The Custom Script Extension for Windows will run on the extension supported extension OSs;

WindowsWindows

  • Windows Server 2008 R2Windows Server 2008 R2
  • Windows Server 2012Windows Server 2012
  • Windows Server 2012 R2Windows Server 2012 R2
  • Windows 10Windows 10
  • Windows Server 2016Windows Server 2016
  • Windows Server 2016 CoreWindows Server 2016 Core
  • Windows Server 2019Windows Server 2019
  • Windows Server 2019 CoreWindows Server 2019 Core

Skript platsScript Location

Du kan konfigurera tillägget så att det använder Azure Blob Storage-autentiseringsuppgifterna för att få åtkomst till Azure Blob Storage.You can configure the extension to use your Azure Blob storage credentials to access Azure Blob storage. Skript platsen kan vara valfri, så länge den virtuella datorn kan dirigeras till den slut punkten, till exempel GitHub eller en intern fil server.The script location can be anywhere, as long as the VM can route to that end point, such as GitHub or an internal file server.

Internet anslutningInternet Connectivity

Om du behöver hämta ett skript externt, till exempel från GitHub eller Azure Storage, måste du öppna ytterligare brand Väggs-och nätverks säkerhets grupps portar.If you need to download a script externally such as from GitHub or Azure Storage, then additional firewall and Network Security Group ports need to be opened. Om ditt skript till exempel finns i Azure Storage kan du tillåta åtkomst med hjälp av Azure NSG service-taggar för lagring.For example, if your script is located in Azure Storage, you can allow access using Azure NSG Service Tags for Storage.

Observera att CustomScript-tillägget inte har något sätt att kringgå certifikat verifieringen.Note that CustomScript Extension does not have any way to bypass certificate validation. Så om du laddar ned från en säker plats med t. ex.So if you're downloading from a secured location with eg. ett självsignerat certifikat kan du sluta med fel som "Fjärrcertifikatet är ogiltigt enligt validerings proceduren".a self-signed certificate, you might end up with errors like "The remote certificate is invalid according to the validation procedure". Kontrol lera att certifikatet är korrekt installerat i arkivet "betrodda rot certifikat utfärdare" på den virtuella datorn.Please make sure the certificate is correctly installed in the "Trusted Root Certification Authorities" store on the Virtual Machine.

Om ditt skript finns på en lokal server kanske du fortfarande behöver fler brand väggar och nätverks säkerhets grupps portar måste öppnas.If your script is on a local server, then you may still need additional firewall and Network Security Group ports need to be opened.

TipsTips and Tricks

  • Den högsta fel frekvensen för det här tillägget beror på syntaxfel i skriptet, testa skriptet körs utan fel och Lägg även till ytterligare loggning i skriptet så att det blir lättare att hitta det som misslyckades.The highest failure rate for this extension is because of syntax errors in the script, test the script runs without error, and also put in additional logging into the script to make it easier to find where it failed.
  • Skriv skript som är idempotenta.Write scripts that are idempotent. Detta säkerställer att om de körs igen av misstag, kommer de inte att orsaka system ändringar.This ensures that if they run again accidentally, it will not cause system changes.
  • Se till att skripten inte kräver indata från användaren när de körs.Ensure the scripts don't require user input when they run.
  • Skripten kan köra i 90 minuter. Längre körningar gör att etableringen av tillägget misslyckas.There's 90 minutes allowed for the script to run, anything longer will result in a failed provision of the extension.
  • Lägg inte in omstarter i skriptet eftersom det leder till problem med andra tillägg som installeras.Don't put reboots inside the script, this action will cause issues with other extensions that are being installed. Tillägget fortsätter inte efter omstarten.Post reboot, the extension won't continue after the restart.
  • Om du har ett skript som gör en omstart, sedan installerar program och kör skript, kan du schemalägga omstarten med en schemalagd aktivitet i Windows eller använda verktyg som DSC, chef eller Puppet-tillägg.If you have a script that will cause a reboot, then install applications and run scripts, you can schedule the reboot using a Windows Scheduled Task, or use tools such as DSC, Chef, or Puppet extensions.
  • Vi rekommenderar inte att du kör ett skript som gör att VM-agenten stoppas eller uppdateras.It is not recommended to run a script that will cause a stop or update of the VM Agent. Detta kan lämna tillägget i ett över gångs tillstånd, vilket leder till en tids gräns.This can leave the extension in a Transitioning state, leading to a timeout.
  • Tillägget kör bara ett skript en gång. Om du vill köra ett skript vid varje start måste du använda tillägget för att skapa en schemalagd uppgift i Windows.The extension will only run a script once, if you want to run a script on every boot, then you need to use the extension to create a Windows Scheduled Task.
  • Om du vill schemalägga när ett skript ska köras använder du tillägget för att skapa en schemalagd uppgift i Windows.If you want to schedule when a script will run, you should use the extension to create a Windows Scheduled Task.
  • När skriptet körs visas tillägget med övergångsstatus på Azure-portalen eller i CLI.When the script is running, you will only see a 'transitioning' extension status from the Azure portal or CLI. Om du behöver mer frekventa statusuppdateringar för ett skript som körs måste du skapa en egen lösning.If you want more frequent status updates of a running script, you'll need to create your own solution.
  • Anpassat skript tillägg stöder inte proxyservrar, men du kan använda ett fil överförings verktyg som stöder proxyservrar i skriptet, till exempel Invoke-webbegäranCustom Script extension does not natively support proxy servers, however you can use a file transfer tool that supports proxy servers within your script, such as Invoke-WebRequest
  • Om dina skript eller kommandon använder andra katalogplatser än standardplatserna krävs logik som kan hantera den situationen.Be aware of non-default directory locations that your scripts or commands may rely on, have logic to handle this situation.
  • Anpassat skript tillägg körs under kontot LocalSystemCustom Script Extension will run under the LocalSystem Account
  • Om du planerar att använda egenskaperna storageAccountName och storageAccountKey måste dessa egenskaper vara samordnad i protectedSettings.If you plan to use the storageAccountName and storageAccountKey properties, these properties must be collocated in protectedSettings.

TilläggsschemaExtension schema

Konfigurationen för det anpassade skript tillägget anger saker som skript plats och kommandot som ska köras.The Custom Script Extension configuration specifies things like script location and the command to be run. Du kan lagra konfigurationen i konfigurationsfiler, ange den på kommando raden eller ange den i en Azure Resource Manager mall.You can store this configuration in configuration files, specify it on the command line, or specify it in an Azure Resource Manager template.

Du kan lagra känsliga data i en skyddad konfiguration, som krypteras och bara dekrypteras i den virtuella datorn.You can store sensitive data in a protected configuration, which is encrypted and only decrypted inside the virtual machine. Den skyddade konfigurationen är användbar när körnings kommandot innehåller hemligheter som lösen ord.The protected configuration is useful when the execution command includes secrets such as a password.

De här objekten ska behandlas som känsliga data och anges i konfigurationerna för tilläggen för skyddad inställning.These items should be treated as sensitive data and specified in the extensions protected setting configuration. Skyddade inställnings data för Azure VM-tillägg krypteras och endast dekrypteras på den virtuella mål datorn.Azure VM extension protected setting data is encrypted, and only decrypted on the target virtual machine.

{
    "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": {
            "fileUris": [
                "script location"
            ],
            "timestamp":123456789
        },
        "protectedSettings": {
            "commandToExecute": "myExecutionCommand",
            "storageAccountName": "myStorageAccountName",
            "storageAccountKey": "myStorageAccountKey",
            "managedIdentity" : {}
        }
    }
}

Anteckning

Egenskapen managedIdentity får inte användas tillsammans med storageAccountName-eller storageAccountKey-egenskapermanagedIdentity property must not be used in conjunction with storageAccountName or storageAccountKey properties

Anteckning

Endast en version av ett tillägg kan installeras på en virtuell dator vid en viss tidpunkt, vilket innebär att det inte går att ange ett anpassat skript två gånger i samma Resource Manager-mall för samma virtuella dator.Only one version of an extension can be installed on a VM at a point in time, specifying custom script twice in the same Resource Manager template for the same VM will fail.

Anteckning

Vi kan använda det här schemat i VirtualMachine-resursen eller som en fristående resurs.We can use this schema inside the VirtualMachine resource or as a standalone resource. Namnet på resursen måste ha formatet "virtualMachineName/tillägg", om tillägget används som en fristående resurs i ARM-mallen.The name of the resource has to be in this format "virtualMachineName/extensionName", if this extension is used as a standalone resource in the ARM template.

Egenskaps värdenProperty values

NameName Värde/exempelValue / Example DatatypData Type
apiVersionapiVersion 2015-06-152015-06-15 datedate
utgivarepublisher Microsoft.ComputeMicrosoft.Compute strängstring
typtype CustomScriptExtensionCustomScriptExtension strängstring
typeHandlerVersiontypeHandlerVersion 1,101.10 intint
fileUris (t. ex.)fileUris (e.g) https://raw.githubusercontent.com/Microsoft/dotnet-core-sample-templates/master/dotnet-core-music-windows/scripts/configure-music-app.ps1 matrisarray
tidsstämpel (t. ex.)timestamp (e.g) 123456789123456789 32-bitars heltal32-bit integer
commandToExecute (t. ex.)commandToExecute (e.g) PowerShell – ExecutionPolicy obegränsade-File configure-music-app.ps1powershell -ExecutionPolicy Unrestricted -File configure-music-app.ps1 strängstring
storageAccountName (t. ex.)storageAccountName (e.g) examplestorageacctexamplestorageacct strängstring
storageAccountKey (t. ex.)storageAccountKey (e.g) TmJK/1N3AbAZ3q/+ hOXoi/l73zOqsaxXDhqa9Y83/v5UpXQp2DQIBuv2Tifp60cE/OaHsJZmQZ7teQfczQj8hg = =TmJK/1N3AbAZ3q/+hOXoi/l73zOqsaxXDhqa9Y83/v5UpXQp2DQIBuv2Tifp60cE/OaHsJZmQZ7teQfczQj8hg== strängstring
managedIdentity (t. ex.)managedIdentity (e.g) {} eller {"clientId": "31b403aa-c364-4240-a7ff-d85fb6cd7232"} eller {"objectId": "12dd289c-0583-46e5-b9b4-115d5c19ef4b"}{ } or { "clientId": "31b403aa-c364-4240-a7ff-d85fb6cd7232" } or { "objectId": "12dd289c-0583-46e5-b9b4-115d5c19ef4b" } JSON-objektjson object

Anteckning

Dessa egenskaps namn är Skift läges känsliga.These property names are case-sensitive. Använd de namn som visas här för att undvika distributions problem.To avoid deployment problems, use the names as shown here.

Information om egenskaps värdeProperty value details

  • commandToExecute: (krävs, sträng) Start punkt skriptet som ska köras.commandToExecute: (required, string) the entry point script to execute. Använd det här fältet i stället om kommandot innehåller hemligheter som lösen ord, eller om dina fileUris är känsliga.Use this field instead if your command contains secrets such as passwords, or your fileUris are sensitive.
  • fileUris: (valfritt, sträng mat ris) URL: er för fil (er) som ska hämtas.fileUris: (optional, string array) the URLs for file(s) to be downloaded.
  • timestamp (valfritt, 32-bitars heltal) Använd endast det här fältet för att utlösa en körning av skriptet genom att ändra värdet för det här fältet.timestamp (optional, 32-bit integer) use this field only to trigger a rerun of the script by changing value of this field. Alla heltals värden är acceptabla. Det får bara vara ett annat än det tidigare värdet.Any integer value is acceptable; it must only be different than the previous value.
  • storageAccountName: (valfritt, sträng) namnet på lagrings kontot.storageAccountName: (optional, string) the name of storage account. Om du anger autentiseringsuppgifter fileUris för lagring måste alla vara URL: er för Azure-blobar.If you specify storage credentials, all fileUris must be URLs for Azure Blobs.
  • storageAccountKey: (valfritt, sträng) åtkomst nyckeln för lagrings kontotstorageAccountKey: (optional, string) the access key of storage account
  • managedIdentity: (valfritt, JSON-objekt) den hanterade identiteten för nedladdning av fil (er)managedIdentity: (optional, json object) the managed identity for downloading file(s)
    • clientId: (valfritt, sträng) klient-ID: t för den hanterade identitetenclientId: (optional, string) the client ID of the managed identity
    • objectId: (valfritt, sträng) objekt-ID för den hanterade identitetenobjectId: (optional, string) the object ID of the managed identity

Följande värden kan anges i offentliga eller skyddade inställningar. tillägget kommer att neka alla konfigurationer där värdena nedan anges i både offentliga och skyddade inställningar.The following values can be set in either public or protected settings, the extension will reject any configuration where the values below are set in both public and protected settings.

  • commandToExecute

Användning av offentliga inställningar kan vara användbart för fel sökning, men vi rekommenderar att du använder skyddade inställningar.Using public settings maybe useful for debugging, but it's recommended that you use protected settings.

Offentliga inställningar skickas i klartext till den virtuella dator där skriptet ska köras.Public settings are sent in clear text to the VM where the script will be executed. Skyddade inställningar krypteras med en nyckel som endast är känd för Azure och den virtuella datorn.Protected settings are encrypted using a key known only to the Azure and the VM. Inställningarna sparas på den virtuella datorn när de skickades, det vill säga om inställningarna har krypterats som de har sparats krypterade på den virtuella datorn.The settings are saved to the VM as they were sent, that is, if the settings were encrypted they're saved encrypted on the VM. Certifikatet som används för att dekryptera de krypterade värdena lagras på den virtuella datorn och används för att dekryptera inställningar (vid behov) vid körning.The certificate used to decrypt the encrypted values is stored on the VM, and used to decrypt settings (if necessary) at runtime.

Egenskap: managedIdentityProperty: managedIdentity

Anteckning

Den här egenskapen måste endast anges i skyddade inställningar.This property must be specified in protected settings only.

CustomScript (version 1,10 och senare) stöder hanterad identitet för hämtning av filer från URL: er som finns i inställningen "fileUris".CustomScript (version 1.10 onwards) supports managed identity for downloading file(s) from URLs provided in the "fileUris" setting. Det ger CustomScript åtkomst till Azure Storage privata blobbar eller behållare utan att användaren måste skicka hemligheter som SAS-token eller lagrings konto nycklar.It allows CustomScript to access Azure Storage private blobs or containers without the user having to pass secrets like SAS tokens or storage account keys.

Om du vill använda den här funktionen måste användaren lägga till en tilldelad eller användardefinierad identitet till den virtuella datorn eller VMSS där CustomScript förväntas köras, och ge hanterad identitets åtkomst till Azure Storage containern eller blobben.To use this feature, the user must add a system-assigned or user-assigned identity to the VM or VMSS where CustomScript is expected to run, and grant the managed identity access to the Azure Storage container or blob.

Om du vill använda den systemtilldelade identiteten på den virtuella mål datorn/VMSS anger du fältet managedidentity till ett tomt JSON-objekt.To use the system-assigned identity on the target VM/VMSS, set "managedidentity" field to an empty json object.

Exempel:Example:

{
  "fileUris": ["https://mystorage.blob.core.windows.net/privatecontainer/script1.ps1"],
  "commandToExecute": "powershell.exe script1.ps1",
  "managedIdentity" : {}
}

Om du vill använda den användardefinierade identiteten på den virtuella mål datorn/VMSS konfigurerar du fältet managedidentity med klient-ID: t eller objekt-ID: t för den hanterade identiteten.To use the user-assigned identity on the target VM/VMSS, configure "managedidentity" field with the client ID or the object ID of the managed identity.

Exempel:Examples:

{
  "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" }
}

Anteckning

Egenskapen managedIdentity får inte användas tillsammans med storageAccountName-eller storageAccountKey-egenskapermanagedIdentity property must not be used in conjunction with storageAccountName or storageAccountKey properties

MalldistributionTemplate deployment

Azure VM-tillägg kan distribueras med Azure Resource Manager mallar.Azure VM extensions can be deployed with Azure Resource Manager templates. JSON-schemat, som beskrivs i föregående avsnitt, kan användas i en Azure Resource Manager mall för att köra det anpassade skript tillägget under distributionen.The JSON schema, which is detailed in the previous section can be used in an Azure Resource Manager template to run the Custom Script Extension during deployment. Följande exempel visar hur du använder tillägget för anpassat skript:The following samples show how to use the Custom Script extension:

PowerShell-distributionPowerShell deployment

Set-AzVMCustomScriptExtensionKommandot kan användas för att lägga till det anpassade skript tillägget till en befintlig virtuell dator.The Set-AzVMCustomScriptExtension command can be used to add the Custom Script extension to an existing virtual machine. Mer information finns i set-AzVMCustomScriptExtension.For more information, see Set-AzVMCustomScriptExtension.

Set-AzVMCustomScriptExtension -ResourceGroupName <resourceGroupName> `
    -VMName <vmName> `
    -Location myLocation `
    -FileUri <fileUrl> `
    -Run 'myScript.ps1' `
    -Name DemoScriptExtension

Ytterligare exempelAdditional examples

Använda flera skriptUsing multiple scripts

I det här exemplet har du tre skript som används för att bygga servern.In this example, you have three scripts that are used to build your server. CommandToExecute anropar det första skriptet och du har också alternativ för hur andra anropas.The commandToExecute calls the first script, then you have options on how the others are called. Du kan till exempel ha ett huvud skript som styr körningen, med rätt fel hantering, loggning och tillstånds hantering.For example, you can have a master script that controls the execution, with the right error handling, logging, and state management. Skripten laddas ned till den lokala datorn för att köra.The scripts are downloaded to the local machine for running. 1_Add_Tools.ps1Du skulle till exempel kunna anropa 2_Add_Features.ps1 genom att lägga till .\2_Add_Features.ps1 i skriptet och upprepa processen för de andra skript som du definierar i $settings .For example in 1_Add_Tools.ps1 you would call 2_Add_Features.ps1 by adding .\2_Add_Features.ps1 to the script, and repeat this process for the other scripts you define in $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;

Köra skript från en lokal resursRunning scripts from a local share

I det här exemplet kanske du vill använda en lokal SMB-server för din skript plats.In this example, you may want to use a local SMB server for your script location. Genom att göra detta behöver du inte ange några andra inställningar, förutom commandToExecute.By doing this, you don't need to provide any other settings, except 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

Så här kör du ett anpassat skript mer än en gång med CLIHow to run custom script more than once with CLI

Om du vill köra det anpassade skript tillägget mer än en gång kan du bara utföra den här åtgärden under följande omständigheter:If you want to run the custom script extension more than once, you can only do this action under these conditions:

  • Tilläggs parameterns namn är samma som den tidigare distributionen av tillägget.The extension Name parameter is the same as the previous deployment of the extension.
  • Uppdatera konfigurationen annars körs inte kommandot igen.Update the configuration otherwise the command won't be re-executed. Du kan lägga till i en dynamisk egenskap i kommandot, till exempel en tidsstämpel.You can add in a dynamic property into the command, such as a timestamp.

Du kan också ange egenskapen ForceUpdateTag till True.Alternatively, you can set the ForceUpdateTag property to true.

Använda Invoke-WebRequestUsing Invoke-WebRequest

Om du använder Invoke-WebRequest i skriptet måste du ange parametern, -UseBasicParsing annars visas följande fel meddelande när du kontrollerar den detaljerade statusen:If you are using Invoke-WebRequest in your script, you must specify the parameter -UseBasicParsing or else you will receive the following error when checking the detailed status:

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 SetsVirtual Machine Scale Sets

Om du vill distribuera tillägget för anpassat skript i en skalnings uppsättning, se Add-AzVmssExtensionTo deploy the Custom Script Extension on a Scale Set, see Add-AzVmssExtension

Klassiska virtuella datorerClassic VMs

Viktigt

De klassiska virtuella datorerna kommer att dras tillbaka den 1 mars 2023.Classic VMs will be retired on March 1, 2023.

Om du använder IaaS-resurser från ASM ska du slutföra migreringen den 1 mars 2023.If you use IaaS resources from ASM, please complete your migration by March 1, 2023. Vi rekommenderar att du gör switchen tidigare för att dra nytta av de många funktionerna i Azure Resource Manager.We encourage you to make the switch sooner to take advantage of the many feature enhancements in Azure Resource Manager.

Mer information finns i migrera dina IaaS-resurser till Azure Resource Manager före den 1 mars 2023.For more information, see Migrate your IaaS resources to Azure Resource Manager by March 1, 2023.

Om du vill distribuera tillägget för anpassat skript på klassiska virtuella datorer kan du använda Azure Portal eller de klassiska Azure PowerShell-cmdletarna.To deploy the Custom Script Extension on classic VMs, you can use the Azure portal or the Classic Azure PowerShell cmdlets.

Azure PortalAzure portal

Navigera till den klassiska VM-resursen.Navigate to your Classic VM resource. Välj tillägg under Inställningar.Select Extensions under Settings.

Klicka på + Lägg till och i listan över resurser väljer du anpassat skript tillägg.Click + Add and in the list of resources choose Custom Script Extension.

På sidan installations tillägg väljer du den lokala PowerShell-filen och fyller i eventuella argument och klickar på OK.On the Install extension page, select the local PowerShell file, and fill out any arguments and click Ok.

PowerShellPowerShell

Använd set-AzureVMCustomScriptExtension- cmdleten kan användas för att lägga till det anpassade skript tillägget till en befintlig virtuell dator.Use the Set-AzureVMCustomScriptExtension cmdlet can be used to add the Custom Script extension to an existing virtual machine.

# define your file URI
$fileUri = 'https://xxxxxxx.blob.core.windows.net/scripts/Create-File.ps1'

# create vm object
$vm = Get-AzureVM -Name <vmName> -ServiceName <cloudServiceName>

# set extension
Set-AzureVMCustomScriptExtension -VM $vm -FileUri $fileUri -Run 'Create-File.ps1'

# update vm
$vm | Update-AzureVM

Felsöka och supportTroubleshoot and support

FelsökaTroubleshoot

Data om tillstånd för tilläggs distributioner kan hämtas från Azure Portal och med hjälp av modulen Azure PowerShell.Data about the state of extension deployments can be retrieved from the Azure portal, and by using the Azure PowerShell module. Kör följande kommando för att se distributions status för tillägg för en virtuell dator:To see the deployment state of extensions for a given VM, run the following command:

Get-AzVMExtension -ResourceGroupName <resourceGroupName> -VMName <vmName> -Name myExtensionName

Utökning av utdata loggas till filer som finns i följande mapp på den virtuella mål datorn.Extension output is logged to files found under the following folder on the target virtual machine.

C:\WindowsAzure\Logs\Plugins\Microsoft.Compute.CustomScriptExtension

De angivna filerna laddas ned till följande mapp på den virtuella mål datorn.The specified files are downloaded into the following folder on the target virtual machine.

C:\Packages\Plugins\Microsoft.Compute.CustomScriptExtension\1.*\Downloads\<n>

där <n> är ett decimal tal som kan ändras mellan körningar av tillägget.where <n> is a decimal integer, which may change between executions of the extension. 1.*Värdet matchar det faktiska, aktuella typeHandlerVersion värdet för tillägget.The 1.* value matches the actual, current typeHandlerVersion value of the extension. Den faktiska katalogen kan till exempel vara C:\Packages\Plugins\Microsoft.Compute.CustomScriptExtension\1.8\Downloads\2 .For example, the actual directory could be C:\Packages\Plugins\Microsoft.Compute.CustomScriptExtension\1.8\Downloads\2.

När commandToExecute kommandot körs anger tillägget den här katalogen (till exempel ...\Downloads\2 ) som den aktuella arbets katalogen.When executing the commandToExecute command, the extension sets this directory (for example, ...\Downloads\2) as the current working directory. Den här processen gör det möjligt att använda relativa sökvägar för att hitta filerna som hämtats via fileURIs egenskapen.This process enables the use of relative paths to locate the files downloaded via the fileURIs property. Se tabellen nedan för exempel.See the table below for examples.

Eftersom den absoluta nedladdnings Sök vägen kan variera med tiden är det bättre att välja relativa skript-och fil Sök vägar i commandToExecute strängen, närhelst det är möjligt.Since the absolute download path may vary over time, it's better to opt for relative script/file paths in the commandToExecute string, whenever possible. Exempel:For example:

"commandToExecute": "powershell.exe . . . -File \"./scripts/myscript.ps1\""

Sök vägs information efter det första URI-segmentet behålls för filer som hämtats via fileUris egenskaps listan.Path information after the first URI segment is kept for files downloaded via the fileUris property list. Som visas i tabellen nedan mappas hämtade filer till under kataloger med hämtning för att avspegla fileUris värdenanas struktur.As shown in the table below, downloaded files are mapped into download subdirectories to reflect the structure of the fileUris values.

Exempel på hämtade filerExamples of Downloaded Files

URI i fileUrisURI in fileUris Relativ nedladdnings platsRelative downloaded location Absolut Hämtad plats 1Absolute downloaded location 1
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

1 de absoluta katalog Sök vägarna ändras under den virtuella datorns livstid, men inte inom en enskild körning av CustomScript-tillägget.1 The absolute directory paths change over the lifetime of the VM, but not within a single execution of the CustomScript extension.

SupportSupport

Om du behöver mer hjälp när som helst i den här artikeln kan du kontakta Azure-experterna i MSDN Azure och Stack Overflow forum.If you need more help at any point in this article, you can contact the Azure experts on the MSDN Azure and Stack Overflow forums. Du kan också skriva en support incident för Azure.You can also file an Azure support incident. Gå till Support webbplatsen för Azure och välj få support.Go to the Azure support site and select Get support. Information om hur du använder Azure-support finns i vanliga frågor och svar om Microsoft Azure support.For information about using Azure Support, read the Microsoft Azure support FAQ.