首页 > 解决方案 > 使用 powershell 在 Azure VM 上启动和停止 Windows 服务

问题描述

使用 powershell,我需要执行以下步骤。
1. 登录 Azure 帐户。
2. 从镜像创建一个虚拟机。
3. 镜像中有windows服务。所以当我们创建VM的时候,那个windows服务已经在上面运行了。停止那个服务。
4. 将一些二进制文件复制到 VM 中的特定文件夹中。
5. 再次启动服务。

在所有这些中,我能够完成 1 和 2 步。而且我找不到其他步骤的任何相关程序。下面是我用来做 1 和 2 的脚本。

Login-AzureRMAccount    

$UserName = "username@organization.com"
$Password = ConvertTo-SecureString "password" -AsPlainText -Force
$psCred = New-Object System.Management.Automation.PSCredential($UserName, $Password)    
New-AzureRmVm `
    -ResourceGroupName "RGN" `
    -Name "VMName" `
    -ImageName "ImageName" `
    -Location "West US" `
    -Credential $psCred

所以任何人都可以帮助我或指导我如何完成其​​余步骤。
在此先感谢您的时间。

编辑:停止服务的命令是
Stop-Service -Name "CPS Dev UniSimServices" -Force

但是,如果我登录到 VM 并运行此命令,这将有效。我想从远程机器本身通过powershell连接到新创建的VM(不登录),然后停止服务。我怎样才能做到这一点?

标签: azurepowershellwindows-servicesazure-virtual-machine

解决方案


您可以使用扩展与 VM 交互,而无需连接到它。您可以将 PowerShell 命令与自定义脚本一起使用:

Set-AzureRmVMExtension -ResourceGroupName "myResourceGroupAutomate" `
    -ExtensionName "IIS" `
    -VMName "myVM" `
    -Location "EastUS" `
    -Publisher Microsoft.Compute `
    -ExtensionType CustomScriptExtension `
    -TypeHandlerVersion 1.8 `
    -SettingString '{"commandToExecute":"powershell Add-WindowsFeature Web-Server; powershell Add-Content -Path \"C:\\inetpub\\wwwroot\\Default.htm\" -Value $($env:computername)"}'

更新

如果您真的想为扩展使用自定义脚本,可以使用如下命令:

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

有关更多详细信息,请参阅Set-AzureRmVMCustomScriptExtension


推荐阅读