如何使用PowerShell清除LaMetric时钟的通知?
用PowerShell自动清除LaMetric时钟的通知
嘿,这事儿好办!LaMetric提供了REST API来管理通知,完全可以用PowerShell调用它来自动清除,不用再手动按按钮啦。我给你一步步拆解:
第一步:准备LaMetric的API凭证
首先得拿到两个关键信息:
- 设备IP地址:你可以在LaMetric的手机APP里找到(设置→设备信息),或者通过路由器的设备列表查询
- API密钥:同样在APP的设置里,找到「开发者」或者「API」选项,生成并复制你的API密钥(注意保密别泄露)
第二步:PowerShell脚本实现清除逻辑
方案1:清除所有通知
如果想一次性清空所有通知,用这个脚本就行:
# 替换成你的设备IP和API密钥 $lametricIp = "192.168.1.100" $apiKey = "你的LaMetric API密钥" # 生成Basic认证所需的Base64字符串 $base64Auth = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes("dev:$apiKey")) try { # 调用LaMetric的删除所有通知API $response = Invoke-RestMethod -Uri "http://$lametricIp:8080/api/v2/device/notifications" ` -Method Delete ` -Headers @{Authorization = "Basic $base64Auth"} Write-Host "✅ 所有通知已成功清除!API响应:$($response | ConvertTo-Json)" } catch { Write-Error "❌ 清除通知失败:$_" # 输出详细错误信息(如果有API返回的错误内容) if ($_.Exception.Response) { $errorStream = $_.Exception.Response.GetResponseStream() $reader = New-Object System.IO.StreamReader($errorStream) $errorContent = $reader.ReadToEnd() | ConvertFrom-Json Write-Error "API错误详情:$($errorContent | ConvertTo-Json)" } }
方案2:只清除特定的构建失败通知
如果不想清空所有,只想删掉构建失败相关的通知,先获取通知列表再筛选删除:
$lametricIp = "192.168.1.100" $apiKey = "你的LaMetric API密钥" $base64Auth = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes("dev:$apiKey")) try { # 获取当前所有通知 $notifications = Invoke-RestMethod -Uri "http://$lametricIp:8080/api/v2/device/notifications" ` -Method Get ` -Headers @{Authorization = "Basic $base64Auth"} # 筛选标题包含「构建失败」的通知(根据你实际的通知标题调整关键词) $buildFailNotifications = $notifications | Where-Object { $_.title -match "构建失败" } if ($buildFailNotifications.Count -eq 0) { Write-Host "ℹ️ 没有找到构建失败相关的通知" return } # 逐个删除筛选出的通知 foreach ($notification in $buildFailNotifications) { Invoke-RestMethod -Uri "http://$lametricIp:8080/api/v2/device/notifications/$($notification.id)" ` -Method Delete ` -Headers @{Authorization = "Basic $base64Auth"} Write-Host "✅ 已清除ID为$($notification.id)的构建失败通知" } } catch { Write-Error "❌ 操作失败:$_" if ($_.Exception.Response) { $errorStream = $_.Exception.Response.GetResponseStream() $reader = New-Object System.IO.StreamReader($errorStream) $errorContent = $reader.ReadToEnd() | ConvertFrom-Json Write-Error "API错误详情:$($errorContent | ConvertTo-Json)" } }
注意事项
- 确保运行PowerShell的机器和LaMetric设备在同一个局域网里,不然可能访问不到设备API
- LaMetric的API默认端口是8080,如果你改过端口,记得在URL里替换
- 如果是在Azure DevOps(原VSTS)的构建步骤里用这个脚本,记得把API密钥和IP地址存成安全变量,不要明文写在脚本里,避免泄露
- 测试的时候可以先手动运行脚本,确认能正常访问设备API再集成到构建流程里
内容的提问来源于stack exchange,提问作者froeschli
相关产品推荐
相关产品推荐

