查找Azure VM是否已空闲
我正在寻找一种方法来发现Azure VM是否已经闲置了一个多小时。 如果超过一小时没有鼠标移动,则符合空闲的条件。 我想保存VM的状态并将其关闭查找Azure VM是否已空闲,azure,powershell,azure-vm-role,Azure,Powershell,Azure Vm Role,我正在寻找一种方法来发现Azure VM是否已经闲置了一个多小时。 如果超过一小时没有鼠标移动,则符合空闲的条件。 我想保存VM的状态并将其关闭 使用Powershell comands可以实现这一点吗?我在过去配置过类似的东西,不幸的是,唯一可靠的方法是通过在Windows上计划的任务(您在最初的问题中没有指定操作系统)。现在,您应该在PowerShell中执行的以下代码将: 如果在过去30分钟内没有任何活动,它将在另外60秒的时间内触发关机命令,以便用户有时间执行任何操作,以取消该操作并等待
使用Powershell comands可以实现这一点吗?我在过去配置过类似的东西,不幸的是,唯一可靠的方法是通过在Windows上计划的任务(您在最初的问题中没有指定操作系统)。现在,您应该在PowerShell中执行的以下代码将:
$TaskName = 'Idle_Shutdown'
$Service = New-Object -ComObject('Schedule.Service')
$Service.Connect()
$RootFolder = $Service.GetFolder('')
$TaskDefinition = $Service.NewTask(0)
$Settings = $TaskDefinition.Settings
$Settings.AllowDemandStart = $true
$Settings.Compatibility = 2
$Settings.Enabled = $true
$Settings.RunOnlyIfIdle = $true
$Settings.IdleSettings.IdleDuration = 'PT30M'
$Settings.IdleSettings.WaitTimeout = 'PT5M'
$Settings.IdleSettings.StopOnIdleEnd = $true
$Trigger = $TaskDefinition.Triggers.Create(2)
$Trigger.Repetition.Interval = 'PT1H'
$Trigger.Repetition.Duration = 'PT12H'
$Trigger.StartBoundary = ([datetime]::Now).ToString("yyyy-MM-dd'T'20:00:00")
$Trigger.Enabled = $true
$Action = $TaskDefinition.Actions.Create(0)
$Action.Path = 'shutdown'
$Action.Arguments = '/s /t 60'
$LocalUser = $TaskDefinition.Principal
$LocalUser.RunLevel = '1'
$user = [environment]::UserDomainName + '\' + [environment]::UserName
$null = $RootFolder.RegisterTaskDefinition($TaskName, $TaskDefinition, 6, $user, $null, 2)
你试过什么?什么不起作用?