Universal Dashboard调用PowerShell Test-It函数无法在Tooltip展示问题
错误原因
New-UDEndpointInitialization的作用是将指定函数、变量注册到Dashboard全局限点作用域,供动态执行的端点上下文调用,该对象本身不是HTML内容,直接传入New-UDHTML的-Markup参数会导致类型解析错误,也就是你截图中出现的异常。- 你的
Test-It函数未注册到端点作用域,表格、Tooltip这类动态组件的执行上下文默认无法访问到外部定义的函数。 - 你需要调用函数得到返回结果后,将结果拼接为合法HTML字符串,再传给
New-UDHTML进行渲染。
修正后完整代码
Start-UdDashboard -Content { $icon_Degraded = 'iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAMAAABhE==' $icon_Advisory = 'iVBORw0KGgoAAAANSUhEUgAAABIAA=' $icon_Unhealthy = 'iVBORw0KGgoAAAANSUhEUgAAAAElFTkSuQmCC' $icon_Healthy = 'iVBORw0KGgoAAAANSUkJggg==' # 提前定义需要注册的函数 function Test-It{ Return "HELLO TO YOU SIR" } # 注册函数和需要在端点中使用的全局变量 $EndpointInit = New-UDEndpointInitialization -Function "Test-It" -Variable @("icon_Degraded", "icon_Advisory", "icon_Unhealthy", "icon_Healthy") New-UdDashboard -Title "Server Performance Dashboard" -Color '#FF050F7F' -EndpointInitialization $EndpointInit -Content { New-UdRow { New-UdColumn -Size 6 -Content { New-UdRow { New-UdColumn -Size 12 -Content { New-UdTable -Title "Athena Status" -Headers @(" ", " ") -Endpoint { @{'MX PAI Ingestion' = New-UDTooltip -TooltipContent { # 调用已注册的函数获取返回值,组装为HTML字符串 $functionResult = Test-It New-UDHTML -Markup "<p>$functionResult</p>" } -content { New-UDHTML -Markup "<img src='data:image/png;base64,$icon_Degraded' />" } }.GetEnumerator() | Out-UDTableData -Property @("Name", "Value") } } } } } } }
注意事项
- 函数定义必须放在
New-UDEndpointInitialization执行之前,确保注册时函数已加载 - 如果端点中需要使用外部定义的变量,需要将变量名添加到
-Variable参数的数组中完成注册,否则端点执行时会报变量未定义错误 New-UDHTML的-Markup参数仅接受纯HTML字符串,不能传入其他类型的PowerShell对象
内容的提问来源于stack exchange,提问作者StealthRT
相关产品推荐
相关产品推荐

