Расширения скриптов для windows

Содержание
  1. Расширение Custom Script в ОС Windows Custom Script Extension for Windows
  2. Предварительные требования Prerequisites
  3. Операционная система Operating System
  4. Windows Windows
  5. Расположение сценария Script Location
  6. Подключение к Интернету Internet Connectivity
  7. Советы и рекомендации Tips and Tricks
  8. Схема расширения Extension schema
  9. Значения свойств Property values
  10. Сведения о значениях свойств Property value details
  11. Свойство: managedIdentity Property: managedIdentity
  12. Развертывание шаблона Template deployment
  13. Развертывание с помощью PowerShell PowerShell deployment
  14. Дополнительные примеры Additional examples
  15. Использование нескольких скриптов Using multiple scripts
  16. Запуск скриптов из локальной общей папки Running scripts from a local share
  17. Многократное выполнение пользовательского скрипта с помощью CLI How to run custom script more than once with CLI
  18. Использование Invoke-WebRequest Using Invoke-WebRequest
  19. Масштабируемые наборы виртуальных машин Microsoft Azure Virtual Machine Scale Sets
  20. классические виртуальные машины; Classic VMs
  21. Портал Azure Azure portal
  22. PowerShell PowerShell
  23. Устранение неполадок и поддержка Troubleshoot and support
  24. Диагностика Troubleshoot
  25. Примеры скачанных файлов Examples of Downloaded Files
  26. Поддержка Support

Расширение Custom Script в ОС Windows Custom Script Extension for Windows

Расширение пользовательских сценариев загружает и запускает сценарии на виртуальных машинах Azure. The Custom Script Extension downloads and executes scripts on Azure virtual machines. Это расширение можно использовать для настройки после развертывания, установки программного обеспечения и других задач настройки или управления. This extension is useful for post deployment configuration, software installation, or any other configuration or management tasks. Сценарии можно скачать из службы хранилища Azure или GitHub или передать на портал Azure во время выполнения расширения. Scripts can be downloaded from Azure storage or GitHub, or provided to the Azure portal at extension run time. Расширение пользовательских сценариев интегрируется с шаблонами Azure Resource Manager, а также его можно запустить с помощью интерфейса командной строки Azure, PowerShell, портала Azure или API REST виртуальной машины Azure. 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.

В этом документе объясняется, как использовать расширение пользовательских сценариев с помощью модуля Azure PowerShell и шаблонов Azure Resource Manager, а также подробно описываются действия по устранению неполадок в системах Windows. 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.

Предварительные требования Prerequisites

Не используйте расширение пользовательских сценариев для выполнения команды Update-AzVM на той же виртуальной машине, которая использовалась для параметра, так как команда выполнится через определенный период времени. Do not use Custom Script Extension to run Update-AzVM with the same VM as its parameter, since it will wait on itself.

Операционная система Operating System

Расширение настраиваемых скриптов для Linux будет работать в поддерживаемых им ОС. The Custom Script Extension for Windows will run on the extension supported extension OSs;

Windows Windows

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

Расположение сценария Script Location

Вы можете настроить расширение, чтобы получить доступ к хранилищу BLOB-объектов Azure с помощью учетных данных службы хранилища BLOB-объектов Azure. You can configure the extension to use your Azure Blob storage credentials to access Azure Blob storage. Скрипт может находиться в любом расположении при условии, что виртуальная машина может осуществлять маршрутизацию в конечную точку, такую как GitHub или внутренний файловый сервер. 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 Connectivity

Чтобы скачать скрипт из внешнего источника, например с сайта GitHub или из службы хранилища Azure, откройте дополнительные порты брандмауэра или группы безопасности сети. 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. Например, если скрипт находится в службе хранилища Azure, вы можете разрешить доступ с помощью тегов службы Azure NSG для хранилища. For example, if your script is located in Azure Storage, you can allow access using Azure NSG Service Tags for Storage.

Обратите внимание, что у расширения CustomScript нет способа обойти проверку сертификата. Note that CustomScript Extension does not have any way to bypass certificate validation. Поэтому при скачивании из защищенного расположения с помощью например. So if you’re downloading from a secured location with eg. самозаверяющий сертификат, возможно, в итоге возникнут такие ошибки, как «удаленный сертификат является недопустимым в соответствии с процедурой проверки». a self-signed certificate, you might end up with errors like «The remote certificate is invalid according to the validation procedure». Убедитесь, что сертификат правильно установлен в хранилище «Доверенные корневые центры сертификации» на виртуальной машине. Please make sure the certificate is correctly installed in the «Trusted Root Certification Authorities» store on the Virtual Machine.

Если скрипт расположен на локальном сервере, вам по-прежнему может потребоваться открыть дополнительные порты брандмауэра и группы безопасности сети. If your script is on a local server, then you may still need additional firewall and Network Security Group ports need to be opened.

Советы и рекомендации Tips and Tricks

  • Высокий процент сбоев этого расширения связан с синтаксическими ошибками в скрипте. Чтобы упростить поиск точки сбоя, протестируйте запуски скрипта без ошибок и включите в скрипт дополнительные возможности ведения журнала. 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.
  • Рекомендуется писать идемпотентные скрипты. Write scripts that are idempotent. Это гарантирует, что если они снова будут выполняться случайно, это не приведет к изменениям системы. This ensures that if they run again accidentally, it will not cause system changes.
  • Выполняемые скрипты не должны запрашивать ввод данных пользователем. Ensure the scripts don’t require user input when they run.
  • На выполнение скрипта отводится 90 минут. Более продолжительное действие вызовет сбой подготовки расширения. There’s 90 minutes allowed for the script to run, anything longer will result in a failed provision of the extension.
  • Не следует помещать перезагрузки в скрипт, так как будут возникать проблемы с другими устанавливаемыми расширениями. Don’t put reboots inside the script, this action will cause issues with other extensions that are being installed. После перезагрузки расширение прекратить работать. Post reboot, the extension won’t continue after the restart.
  • Если есть сценарий, который вызывает перезагрузку, а затем устанавливает приложения и запускает сценарии, можно запланировать перезагрузку с помощью запланированной задачи Windows или использовать такие средства, как расширения DSC, Chef или Puppet. 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.
  • Не рекомендуется запускать сценарий, который приведет к сбою или обновлению агента виртуальной машины. It is not recommended to run a script that will cause a stop or update of the VM Agent. Это позволяет оставить расширение в состоянии перехода, что приведет к превышению времени ожидания. This can leave the extension in a Transitioning state, leading to a timeout.
  • Расширение позволяет запустить скрипт только один раз. Если нужно выполнять скрипт при каждой загрузке, создайте запланированную задачу 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.
  • Чтобы запланировать время выполнения скрипта, необходимо создать запланированную задачу Windows с помощью расширения. If you want to schedule when a script will run, you should use the extension to create a Windows Scheduled Task.
  • Во время выполнения скрипта вы увидите на портале Microsoft Azure или в CLI только переходное состояние расширения. When the script is running, you will only see a ‘transitioning’ extension status from the Azure portal or CLI. Если требуются более частые обновления состояния выполняющегося скрипта, следует создать собственное решение. If you want more frequent status updates of a running script, you’ll need to create your own solution.
  • Расширение пользовательских сценариев изначально не поддерживает прокси-серверы, однако можно использовать средство для обмена файлами, которое поддерживает прокси-серверы в скрипте, например Invoke-WebRequest . Custom 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
  • Следует учитывать настраиваемые расположения каталогов, которые могут использоваться скриптами или командами, и иметь в распоряжении логику для обработки таких ситуаций. Be aware of non-default directory locations that your scripts or commands may rely on, have logic to handle this situation.
  • Расширение пользовательских скриптов будет выполняться под учетной записью LocalSystem Custom Script Extension will run under the LocalSystem Account
  • Если вы планируете использовать свойства storageAccountName и storageAccountKey , эти свойства должны быть выровнены в protectedSettings. If you plan to use the storageAccountName and storageAccountKey properties, these properties must be collocated in protectedSettings.

Схема расширения Extension schema

В конфигурации расширения пользовательских сценариев указываются такие параметры, как расположение сценария и команда для его выполнения. The Custom Script Extension configuration specifies things like script location and the command to be run. Эту конфигурацию можно хранить в файлах конфигурации, указать в командной строке или в шаблоне Azure Resource Manager. You can store this configuration in configuration files, specify it on the command line, or specify it in an Azure Resource Manager template.

Читайте также:  Как удалить автозапуск приложений windows 10

Конфиденциальные данные можно хранить в зашифрованном виде в защищенной конфигурации, которая расшифровывается только внутри виртуальной машины. You can store sensitive data in a protected configuration, which is encrypted and only decrypted inside the virtual machine. Защищенную конфигурацию можно использовать для команд, которые содержат секретные данные, например пароли. The protected configuration is useful when the execution command includes secrets such as a password.

Эти элементы следует рассматривать в качестве конфиденциальных данных. Их нужно задать в защищенной конфигурации параметров расширений. These items should be treated as sensitive data and specified in the extensions protected setting configuration. Данные защищенных параметров расширения виртуальной машины Azure зашифрованы. Они расшифровываются только на целевой виртуальной машине. Azure VM extension protected setting data is encrypted, and only decrypted on the target virtual machine.

Свойство managedIdentity не должны использоваться в сочетании со свойствами storageAccountName или storageAccountKey managedIdentity property must not be used in conjunction with storageAccountName or storageAccountKey properties

На виртуальной машине нельзя устанавливать больше одной версии расширения одновременно. Если указать пользовательский скрипт дважды в одном и том же шаблоне Resource Manager для той же виртуальной машины, возникнет ошибка. 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.

Эту схему можно использовать в ресурсе VirtualMachine или в качестве автономного ресурса. We can use this schema inside the VirtualMachine resource or as a standalone resource. Имя ресурса должно быть в формате «virtualMachineName/extensionName», если это расширение используется в качестве автономного ресурса в шаблоне Resource Manager. 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.

Значения свойств Property values

Имя Name Значение и пример Value / Example Тип данных Data Type
версия_API apiVersion 2015-06-15 2015-06-15 Дата date
publisher publisher Microsoft.Compute; Microsoft.Compute строка string
type type CustomScriptExtension CustomScriptExtension строка string
typeHandlerVersion typeHandlerVersion 1,10 1.10 INT int
fileUris (пример) fileUris (e.g) https://raw.githubusercontent.com/Microsoft/dotnet-core-sample-templates/master/dotnet-core-music-windows/scripts/configure-music-app.ps1 массиве array
метка времени (например) timestamp (e.g) 123456789 123456789 32-разрядное целое число 32-bit integer
commandToExecute (пример) commandToExecute (e.g) powershell -ExecutionPolicy Unrestricted -File configure-music-app.ps1 powershell -ExecutionPolicy Unrestricted -File configure-music-app.ps1 строка string
storageAccountName (пример) storageAccountName (e.g) examplestorageacct examplestorageacct строка string
storageAccountKey (пример) storageAccountKey (e.g) TmJK/1N3AbAZ3q/+hOXoi/l73zOqsaxXDhqa9Y83/v5UpXQp2DQIBuv2Tifp60cE/OaHsJZmQZ7teQfczQj8hg== TmJK/1N3AbAZ3q/+hOXoi/l73zOqsaxXDhqa9Y83/v5UpXQp2DQIBuv2Tifp60cE/OaHsJZmQZ7teQfczQj8hg== строка string
managedIdentity (пример) managedIdentity (e.g) <> или <"clientId": "31b403aa-c364-4240-A7FF-d85fb6cd7232">или <"objectId": "12dd289c-0583-46e5-b9b4-115d5c19ef4b" > < >or < "clientId": "31b403aa-c364-4240-a7ff-d85fb6cd7232" >or Объект JSON json object

В именах свойств учитывается регистр. These property names are case-sensitive. Чтобы избежать проблем с развертыванием, используйте имена, как показано ниже. To avoid deployment problems, use the names as shown here.

Сведения о значениях свойств Property value details

  • commandToExecute : (обязательное, строка) выполняемый сценарий точки входа. commandToExecute : (required, string) the entry point script to execute. Если команда содержит секретные данные, например пароли, или если значения fileUri являются конфиденциальным, используйте взамен это поле. Use this field instead if your command contains secrets such as passwords, or your fileUris are sensitive.
  • fileUris : (необязательное, строковый массив) URL-адреса файлов для скачивания. fileUris : (optional, string array) the URLs for file(s) to be downloaded.
  • timestamp (необязательный, 32-битное целое число) используется только для повторного запуска скрипта при изменении значения этого поля. timestamp (optional, 32-bit integer) use this field only to trigger a rerun of the script by changing value of this field. Любое целочисленное значение допустимо, оно только должно отличаться от предыдущего значения. Any integer value is acceptable; it must only be different than the previous value.
  • storageAccountName : (необязательное, строка) имя учетной записи хранения. storageAccountName : (optional, string) the name of storage account. Если указаны учетные данные хранилища, все значения fileUris должны иметь формат URL-адресов для BLOB-объектов Azure. If you specify storage credentials, all fileUris must be URLs for Azure Blobs.
  • storageAccountKey : (необязательное, строка) ключ доступа для учетной записи хранения. storageAccountKey : (optional, string) the access key of storage account
  • managedIdentity : (необязательный, объект JSON) управляемое удостоверение для скачивания файлов managedIdentity : (optional, json object) the managed identity for downloading file(s)
    • clientId : (необязательный, строка) идентификатор клиента управляемого удостоверения clientId : (optional, string) the client ID of the managed identity
    • objectId : (необязательный, строка) идентификатор объекта управляемого удостоверения objectId : (optional, string) the object ID of the managed identity

Указанные ниже значения можно задавать либо в открытых, либо в защищенных параметрах. Расширение отклонит любую конфигурацию, в которой приведенные ниже значения будут указаны в открытых и защищенных параметрах одновременно. 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.

Открытые параметры могут быть полезны для отладки, но рекомендуется использовать защищенные параметры. Using public settings maybe useful for debugging, but it’s recommended that you use protected settings.

Открытые параметры отправляются в виде открытого текста на виртуальную машину, где будет выполняться скрипт. Public settings are sent in clear text to the VM where the script will be executed. Защищенные параметры шифруются с помощью ключа, который известен только Azure и виртуальной машине. Protected settings are encrypted using a key known only to the Azure and the VM. Параметры сохраняются на виртуальной машине в том виде, в каком они были отправлены, т. е. если параметры были зашифрованы, они сохраняются на виртуальной машине зашифрованными. 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. Сертификат, используемый для расшифровки зашифрованных значений, хранится на виртуальной машине и применяется для расшифровки параметров (при необходимости) во время выполнения. The certificate used to decrypt the encrypted values is stored on the VM, and used to decrypt settings (if necessary) at runtime.

Свойство: managedIdentity Property: managedIdentity

Это свойство должно быть задано только в защищенных параметрах. This property must be specified in protected settings only.

CustomScript (начиная с версии 1.10) поддерживает управляемое удостоверение для скачивания файлов с URL-адресов, указанных в параметре «fileUris». CustomScript (version 1.10 onwards) supports managed identity for downloading file(s) from URLs provided in the «fileUris» setting. Это предоставляет CustomScript доступ к частным BLOB-объектам или контейнерам службы хранилища Azure без необходимости передавать секреты, такие как маркеры SAS или ключи учетной записи хранения. 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.

Чтобы использовать эту функцию, пользователь должен добавить назначенное системой или назначенное пользователем удостоверение на виртуальную машину или VMSS, где ожидается выполнение CustomScript, и предоставить управляемому удостоверению доступ к контейнеру службы хранилища Azure или BLOB-объектов. 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.

Чтобы использовать назначенное системой удостоверение на целевой виртуальной машине или VMSS, задайте в поле «managedidentity» пустой объект JSON. To use the system-assigned identity on the target VM/VMSS, set «managedidentity» field to an empty json object.

Чтобы использовать назначенное пользователем удостоверение на целевой виртуальной машине или VMSS, настройте в поле «managedidentity» идентификатор клиента или идентификатор объекта управляемого удостоверения. 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.

Свойство managedIdentity не должны использоваться в сочетании со свойствами storageAccountName или storageAccountKey managedIdentity property must not be used in conjunction with storageAccountName or storageAccountKey properties

Развертывание шаблона Template deployment

Расширения виртуальной машины Azure можно развернуть с помощью шаблонов Azure Resource Manager. Azure VM extensions can be deployed with Azure Resource Manager templates. Схема JSON, подробно описанная в предыдущем разделе, может использоваться в шаблоне Azure Resource Manager для запуска расширения пользовательского скрипта во время развертывания. 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. Приведенные ниже примеры демонстрируют использование расширения пользовательских сценариев. The following samples show how to use the Custom Script extension:

Развертывание с помощью PowerShell PowerShell deployment

Выполнив команду Set-AzVMCustomScriptExtension , расширение пользовательских сценариев можно добавить на существующую виртуальную машину. The Set-AzVMCustomScriptExtension command can be used to add the Custom Script extension to an existing virtual machine. Дополнительные сведения см. в статье о Set-AzVMCustomScriptExtension. For more information, see Set-AzVMCustomScriptExtension.

Дополнительные примеры Additional examples

Использование нескольких скриптов Using multiple scripts

В этом примере три скрипта используются для построения сервера. In this example, you have three scripts that are used to build your server. commandToExecute вызывает первый скрипт, таким образом у вас есть параметры вызова других. The commandToExecute calls the first script, then you have options on how the others are called. Например, можно создать главный сценарий, который управляет выполнением с правильной обработкой ошибок, ведением журнала и управлением состоянием. For example, you can have a master script that controls the execution, with the right error handling, logging, and state management. Скрипты загружаются на локальный компьютер для выполнения. The scripts are downloaded to the local machine for running. Например, в 1_Add_Tools.ps1 можно вызвать 2_Add_Features.ps1 , добавив .\2_Add_Features.ps1 в скрипт, и повторить эту процедуру для других скриптов, определенных в $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 .

Запуск скриптов из локальной общей папки Running scripts from a local share

В этом примере может потребоваться использовать локальный сервер SMB в качестве расположения скрипта. In this example, you may want to use a local SMB server for your script location. Таким образом, вам не нужно указывать другие параметры, кроме commandToExecute. By doing this, you don’t need to provide any other settings, except commandToExecute.

Многократное выполнение пользовательского скрипта с помощью CLI How to run custom script more than once with CLI

Чтобы выполнить расширение пользовательского скрипта более одного раза, должны соблюдаться следующие условия: If you want to run the custom script extension more than once, you can only do this action under these conditions:

  • Параметр Name расширения совпадает с указанным при предыдущем развертывании расширения. The extension Name parameter is the same as the previous deployment of the extension.
  • Необходимо обновить конфигурацию, в противном случае команда не будет выполнена повторно. Update the configuration otherwise the command won’t be re-executed. Можно добавить в команду динамическое свойство, например метку времени. You can add in a dynamic property into the command, such as a timestamp.

Кроме того, можно задать для свойства ForceUpdateTag значение true. Alternatively, you can set the ForceUpdateTag property to true.

Использование Invoke-WebRequest Using Invoke-WebRequest

Если вы используете Invoke-WebRequest в скрипте, необходимо указать параметр -UseBasicParsing , иначе при проверке подробного состояния появится следующая ошибка: 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:

Масштабируемые наборы виртуальных машин Microsoft Azure Virtual Machine Scale Sets

Сведения о развертывании расширения пользовательских скриптов в масштабируемом наборе см. в Add-AzVmssExtension To deploy the Custom Script Extension on a Scale Set, see Add-AzVmssExtension

классические виртуальные машины; Classic VMs

1 марта 2023 г. мы прекратим поддержку классических виртуальных машин. Classic VMs will be retired on March 1, 2023.

Если вы используете ресурсы IaaS из ASM, выполните миграцию до 1 марта 2023 г. If you use IaaS resources from ASM, please complete your migration by March 1, 2023. Рекомендуем осуществить этот переход как можно раньше, чтобы воспользоваться различными улучшенными функциями в Azure Resource Manager. We encourage you to make the switch sooner to take advantage of the many feature enhancements in Azure Resource Manager.

Чтобы развернуть расширение пользовательских сценариев на классических виртуальных машинах, можно использовать портал Azure или классические командлеты Azure PowerShell. To deploy the Custom Script Extension on classic VMs, you can use the Azure portal or the Classic Azure PowerShell cmdlets.

Портал Azure Azure portal

Перейдите к классическому ресурсу виртуальной машины. Navigate to your Classic VM resource. Выберите Расширения в разделе Параметры. Select Extensions under Settings.

Щелкните + Добавить и в списке ресурсов выберите Расширение пользовательских скриптов. Click + Add and in the list of resources choose Custom Script Extension.

На странице Установка расширения выберите локальный файл PowerShell, заполните все аргументы и нажмите кнопку ОК. On the Install extension page, select the local PowerShell file, and fill out any arguments and click Ok.

PowerShell PowerShell

Выполнив команду Set-AzureVMCustomScriptExtension, вы сможете добавить расширение пользовательских сценариев на существующую виртуальную машину. Use the Set-AzureVMCustomScriptExtension cmdlet can be used to add the Custom Script extension to an existing virtual machine.

Устранение неполадок и поддержка Troubleshoot and support

Диагностика Troubleshoot

Данные о состоянии развертывания расширения можно получить на портале Azure, а также с помощью модуля Azure PowerShell. Data about the state of extension deployments can be retrieved from the Azure portal, and by using the Azure PowerShell module. Чтобы просмотреть состояние развертывания расширений для определенной виртуальной машины, выполните следующую команду: To see the deployment state of extensions for a given VM, run the following command:

Выходные данные расширения регистрируются в файле, расположенном в следующей папке на целевой виртуальной машине. Extension output is logged to files found under the following folder on the target virtual machine.

Указанные файлы скачиваются в указанную ниже папку на целевой виртуальной машине. The specified files are downloaded into the following folder on the target virtual machine.

— десятичное целое число, которое может измениться между выполнениями расширения. where is a decimal integer, which may change between executions of the extension. Значение 1.* соответствует фактическому текущему значению typeHandlerVersion расширения. The 1.* value matches the actual, current typeHandlerVersion value of the extension. Например, фактическим каталогом может быть 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 .

При выполнении команды commandToExecute расширение устанавливает этот каталог (например, . \Downloads\2 ) в качестве текущего рабочего каталога. When executing the commandToExecute command, the extension sets this directory (for example, . \Downloads\2 ) as the current working directory. Этот процесс позволяет использовать относительные пути для поиска файлов, скачанных с помощью свойства fileURIs . This process enables the use of relative paths to locate the files downloaded via the fileURIs property. Примеры приведены в следующей таблице. See the table below for examples.

Так как со временем абсолютный путь для скачивания может измениться, в строке commandToExecute лучше указывать относительные пути к сценариям или файлам, когда это возможно. 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. Пример: For example:

Для файлов, скачанных с помощью списка свойств fileUris , сохраняются данные пути после первого сегмента универсального кода ресурса (URI). Path information after the first URI segment is kept for files downloaded via the fileUris property list. Как показано в следующей таблице, скачанные файлы распределяются по подкаталогам в соответствии со структурой значений fileUris . As shown in the table below, downloaded files are mapped into download subdirectories to reflect the structure of the fileUris values.

Примеры скачанных файлов Examples of Downloaded Files

Универсальный код ресурса (URI) в fileUris URI in fileUris Относительное расположение скачанных файлов Relative downloaded location Абсолютное расположение скачанных файлов 1 Absolute 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 Абсолютные пути каталогов изменяются в течение времени существования виртуальной машины, но не в рамках одного выполнения расширения CustomScript. 1 The absolute directory paths change over the lifetime of the VM, but not within a single execution of the CustomScript extension.

Поддержка Support

Если в любой момент при изучении этой статьи вам потребуется дополнительная помощь, вы можете обратиться к экспертам по Azure на форумах MSDN Azure и Stack Overflow. 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. Можно также зарегистрировать обращение в службу поддержки Azure. You can also file an Azure support incident. Перейдите на сайт поддержки Azure и щелкните «Получить поддержку». Go to the Azure support site and select Get support. Дополнительные сведения об использовании службы поддержки Azure см. в статье Часто задаваемые вопросы о поддержке Microsoft Azure. For information about using Azure Support, read the Microsoft Azure support FAQ.

Читайте также:  Как распаковать cab файл windows
Оцените статью