You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否查询MSI本地端点运行端口?含VM内脚本实现方法

查询MSI本地端点运行端口及脚本实现方法

当然可以查询MSI(Managed Service Identity)本地端点的运行端口!不管是Windows还是Linux虚拟机,都能通过简单的脚本快速获取端口信息,下面是具体的实现方法:

Windows虚拟机(PowerShell脚本)

MSI的本地端点信息通常会通过环境变量暴露,也可以通过网络连接监听信息来查询:

方法1:从环境变量提取端口

IDENTITY_ENDPOINT环境变量直接包含了MSI端点的完整URL,我们可以从中解析出端口:

# 获取并解析IDENTITY_ENDPOINT环境变量
$identityEndpoint = $env:IDENTITY_ENDPOINT
if ($identityEndpoint) {
    $port = [Uri]$identityEndpoint | Select-Object -ExpandProperty Port
    Write-Host "MSI本地端点运行端口: $port"
} else {
    Write-Host "未检测到MSI本地端点环境变量,请确认虚拟机已启用MSI功能"
}

方法2:通过网络连接查询监听端口

如果环境变量未生效,也可以直接查找监听169.254.169.254(MSI元数据服务默认IP)的TCP端口:

# 筛选本地地址为169.254.169.254的TCP连接
Get-NetTCPConnection -LocalAddress 169.254.169.254 | Select-Object LocalPort, State

Linux虚拟机(Shell脚本)

Linux环境下同样可以通过环境变量或网络工具查询:

方法1:从环境变量提取端口

利用字符串处理工具从IDENTITY_ENDPOINT中提取端口:

# 检查环境变量并解析端口
if [ -n "$IDENTITY_ENDPOINT" ]; then
    port=$(echo "$IDENTITY_ENDPOINT" | awk -F ':' '{print $3}' | awk -F '/' '{print $1}')
    echo "MSI本地端点运行端口: $port"
else
    echo "未检测到MSI本地端点环境变量,请确认虚拟机已启用MSI功能"
fi

方法2:通过ss命令查询监听端口

使用ss工具(替代netstat的现代工具)查找监听指定IP的端口:

# 查找监听169.254.169.254的TCP/UDP端口
ss -tuln | grep 169.254.169.254

小提示:如果以上方法没有返回结果,大概率是虚拟机尚未启用MSI功能,需要先在Azure门户中为虚拟机开启Managed Service Identity。

内容的提问来源于stack exchange,提问作者Roopesh Nair

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 07:39:33