适用于 Windows 的自定义脚本扩展

自定义脚本扩展在 Azure 虚拟机上下载并执行脚本。 此扩展适用于部署后配置、软件安装或其他任何配置/管理任务。 可以从 Azure 存储或 GitHub 下载脚本,或者在扩展运行时将脚本提供给 Azure 门户。 自定义脚本扩展与 Azure Resource Manager 模板集成,也可以使用 Azure CLI、PowerShell、Azure 门户或 Azure 虚拟机 REST API 运行它。

本文档详细说明了如何通过 Azure PowerShell 模块和 Azure Resource Manager 模板使用自定义脚本扩展,同时详细说明了 Windows 系统上的故障排除步骤。

先决条件

操作系统

可以针对 Windows 10 客户端、Windows Server 2008 R2、2012、2012 R2 和 2016 版本运行适用于 Windows 的自定义脚本扩展。

脚本位置

脚本需要存储在 Azure Blob 存储中或可通过有效 URL 访问的任何其他位置。

Internet 连接

适用于 Windows 的自定义脚本扩展要求目标虚拟机已连接到 Internet。

扩展架构

以下 JSON 显示自定义脚本扩展的架构。 扩展需要脚本位置(Azure 存储或其他具有有效 URL 的位置)以及命令才能执行。 如果使用 Azure 存储作为脚本源,则需 Azure 存储帐户名称和帐户密钥。 这些项目应视为敏感数据,并在扩展的受保护设置配置中指定。 Azure VM 扩展的受保护设置数据已加密,并且只能在目标虚拟机上解密。

JSON
{
    "apiVersion": "2015-06-15",
    "type": "Microsoft.Compute/virtualMachines/extensions",
    "name": "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.9",
        "autoUpgradeMinorVersion": true,
        "settings": {
            "fileUris": [
                "script location"
            ]
        },
        "protectedSettings": {
            "commandToExecute": "myExecutionCommand",
            "storageAccountName": "myStorageAccountName",
            "storageAccountKey": "myStorageAccountKey"
        }
    }
}

属性值

名称 值/示例
apiVersion 2015-06-15
publisher Microsoft.Compute
type 扩展
typeHandlerVersion 1.9
fileUris(例如) https://raw.githubusercontent.com/Microsoft/dotnet-core-sample-templates/master/dotnet-core-music-windows/scripts/configure-music-app.ps1
commandToExecute(例如) powershell -ExecutionPolicy Unrestricted -File configure-music-app.ps1
storageAccountName(例如) examplestorageacct
storageAccountKey(例如) TmJK/1N3AbAZ3q/+hOXoi/l73zOqsaxXDhqa9Y83/v5UpXQp2DQIBuv2Tifp60cE/OaHsJZmQZ7teQfczQj8hg==

注意 - 这些属性名称区分大小写。 使用上述名称可避免部署问题。

模板部署

可使用 Azure Resource Manager 模板部署 Azure VM 扩展。 可以在 Azure 资源管理器模板中使用上一部分中详细介绍的 JSON 架构,以便在 Azure 资源管理器模板部署过程中运行自定义脚本扩展。 若需包含自定义脚本扩展的示例模板,可访问 GitHub

PowerShell 部署

可以使用 Set-AzureRmVMCustomScriptExtension 命令将自定义脚本扩展添加到现有虚拟机。 有关详细信息,请参阅 Set-AzureRmVMCustomScriptExtension 

PowerShell
Set-AzureRmVMCustomScriptExtension -ResourceGroupName myResourceGroup `
    -VMName myVM `
    -Location myLocation `
    -FileUri myURL `
    -Run 'myScript.ps1' `
    -Name DemoScriptExtension

故障排除和支持

故障排除

有关扩展部署状态的数据可以从 Azure 门户和使用 Azure PowerShell 模块进行检索。 若要查看给定 VM 的扩展部署状态,请运行以下命令。

PowerShell
Get-AzureRmVMExtension -ResourceGroupName myResourceGroup -VMName myVM -Name myExtensionName

扩展执行输出将记录到可在目标虚拟机上的以下目录中找到的文件中。

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

指定的文件下载到目标虚拟机上的以下目录中。

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

其中,<n> 是一个十进制整数,可以在不同的扩展执行之间更改。 1.* 值与扩展的 typeHandlerVersion 的当前实际值匹配。 例如,实际目录可能是 C:\Packages\Plugins\Microsoft.Compute.CustomScriptExtension\1.8\Downloads\2

执行 commandToExecute 命令时,扩展会将该目录(例如 ...\Downloads\2)设置为当前的工作目录。 这样可以通过 fileURIs 属性使用相对路径查找下载的文件。 请参阅下表中的示例。

绝对下载路径可能会随时间而变化,因此在可能情况下,最好是在 commandToExecute 字符串中选择使用相对的脚本/文件路径。 例如:

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

会为通过 fileUris 属性列表下载的文件保留第一个 URI 段之后的路径信息。 如下表所示,下载的文件映射到下载子目录中,以便反映 fileUris 值的结构。

下载的文件的示例
fileUris 中的 URI 相对下载位置 绝对下载位置 *
https://someAcct.blob.core.chinacloudapi.cn/aContainer/scripts/myscript.ps1 ./scripts/myscript.ps1 C:\Packages\Plugins\Microsoft.Compute.CustomScriptExtension\1.8\Downloads\2\scripts\myscript.ps1
https://someAcct.blob.core.chinacloudapi.cn/aContainer/topLevel.ps1 ./topLevel.ps1 C:\Packages\Plugins\Microsoft.Compute.CustomScriptExtension\1.8\Downloads\2\topLevel.ps1

* 如上所示,绝对目录路径会在 VM 的生存期内更改,但不会在 CustomScript 扩展的某次执行期间更改。

支持

如果对本文中的任何观点存在疑问,可以联系 MSDN Azure 和 CSDN Azure 上的 Azure 专家。 或者,也可以提交 Azure 支持事件。 请转到 Azure 支持站点并选择“获取支持”。 有关使用 Azure 支持的信息,请阅读 Azure 支持常见问题

立即访问http://market.azure.cn

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 你可以使用 Windows 脚本编辑器来创建一个脚本,用来定时关机。首先,打开“开始”菜单,然后输入“Windows 脚本编辑器”,然后点击“Windows 脚本编辑器”。在脚本编辑器中,输入以下代码:shutdown -s -t 3600,然后保存脚本,给它起一个有意义的名字,比如“shutdown.vbs”。最后,双击这个脚本,它就会定时关机了。 ### 回答2: Windows10系统自动关机脚本可以通过使用批处理文件来实现。 首先,我们可以创建一个文本文件,然后将其保存为批处理文件的格式(.bat)。一种简单的方式是在桌面上创建一个新的文本文件,然后将其更名为“autoshutdown.bat”。 接下来,在打开的文本文件中,我们可以输入以下命令来编写自动关机脚本: ```bat @echo off echo 正在关机,请稍等... shutdown -s -t 3600 ``` 在上述脚本中,`-s`表示关机操作,`-t 3600`表示计算机将在3600秒(即60分钟)后关机。你还可以根据需要更改后面的数字来设置定时关闭的时间。 当完成脚本编写后,保存并关闭该文件。 要运行这个脚本,只需双击该批处理文件(autoshutdown.bat)。你会看到一个命令行窗口弹出,显示“正在关机,请稍等...”的提示信息,并开始倒计时。倒计时结束后,系统将自动关机。 此脚本的作用是在一定时间后自动关机计算机,适用于那些需要在特定时间后关闭计算机的情况,如下载文件完成后自动关机等。 需要注意的是,使用自动关机脚本时请确保没有未保存的工作,并且不会造成数据丢失或其他任何不良影响。正确使用这种脚本可以提高工作效率,但不当使用可能会带来一些风险,建议谨慎操作。 ### 回答3: Windows 10系统可以通过编写自动关机脚本来实现定时关机的功能。以下是如何编写和使用这样的脚本的简单指南: 1. 首先,打开记事本或其他文本编辑器并新建一个文本文件。 2. 在文本文件中,输入以下代码: ```powershell $shutdownTime = [DateTime]::Now.AddMinutes(30) # 设置关机时间为当前时间后的30分钟 $shutdownMessage = "计算机将在30分钟后关闭,请保存并退出正在进行的工作。" New-ScheduledTask -Action (New-ScheduledTaskAction -Execute 'shutdown.exe' -Argument "/s /t 0") -Trigger (New-ScheduledTaskTrigger -Once -At $shutdownTime) -Settings (New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries -DontStopIfGoingOnBatteries) Set-ScheduledTask -TaskName "自动关机" -Description $shutdownMessage ``` 请注意,此代码使用了PowerShell脚本语言,因此确保文件的扩展名为`.ps1`。 3. 将文件保存为`shutdown.ps1`(或其他您喜欢的名称)。 4. 您可以双击运行此文件,但在默认情况下,Windows 10系统已禁用运行未签名的脚本。要运行此脚本,您需要打开PowerShell并输入以下命令来更改执行策略: ```powershell Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser ``` 5. 现在,您可以再次双击运行`shutdown.ps1`脚本文件并确认关机时间和提示消息。 以上就是一个简单的Windows 10系统自动关机脚本的编写方法。根据需要,您可以修改关机时间和自定义提示消息。如果您需要更高级的功能,可以通过使用PowerShell脚本的其他命令和参数来进行扩展

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值