我想安排停止Azure VM的任务。我有一个脚本可以做到这一点,但问题是PowerShell中的 Stop-AzureVM 命令会提示用户选择“Y”或“N”。无论如何(在脚本内部或在计划任务的命令中)都可以发送'Y'值,以便在运行时不会挂起计划任务。
使用PS脚本更新问题,包括David Markogon的有用答案
Set-ExecutionPolicy RemoteSigned
$env:PSModulePath=$env:PSModulePath+";"+"C:\Program Files (x86)\Microsoft SDKs\Windows Azure\PowerShellAzure\PowerShell"
Import-Module Azure
Set-ExecutionPolicy RemoteSigned -Force
Set-AzureSubscription –DefaultSubscription "Name of Subscription"
foreach($AzureVMObject in get-AzureVM)
{ if($AzureVMObject.Name -ne "NAME-VM-DONT-STOP" -and $AzureVMObject.Status -eq "ReadyRole")
{ Stop-AzureVM -ServiceName $AzureVMObject.Name -Name $AzureVMObject.Name -Force}}
答案 0 :(得分:4)
为什么不使用-Force
标志?如果您尝试在部署中释放最后一个虚拟机,这可能就是您需要确认的原因。
Stop-AzureVM -ServiceName myservice -Name myvmname -Force
您还可以选择停止虚拟机并保留其配置,以保留IP地址:
Stop-AzureVM -ServiceName myservice -Name myvmname -StayProvisioned
注意:您需要获取Azure的最新PowerShell cmdlet以使用-StayProvisioned
,因为它刚刚在一周前添加。