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

PowerShell脚本中如何声明表列变量读取Azure数据库列值

PowerShell读取Azure SQL查询结果指定字段实现方案

将Invoke-Sqlcmd的执行结果赋值给变量后,可直接通过列名属性访问对应字段值,无需额外做字段映射。

实现逻辑

  • 接收查询返回的结果对象
  • 直接通过.VMStatus属性读取目标字段值存入变量,用于后续条件判断和更新操作

你的查询条件已经通过唯一主键idVMProperties限定了单条返回结果,不需要额外做结果遍历;如果后续有多条结果查询需求,遍历结果集取每条记录的.VMStatus属性即可。

修改后可直接运行的示例代码

# Import the module
#Import-Module -Name SqlServer

#Set Azure subscription
#az account set --subscription "subscriptionid"

# 定义查询语句
$query = "select * from Sys_Mst_VMProperties where Name = 'test7777' and idVMProperties = 1961"

# 配置数据库连接参数
$Params = @{
    'ServerInstance' = 'instance.database.windows.net';
    'Database' = 'dbname';
    'Username' = 'userid';
    'Password' = 'pwd';
    'Query' = $query;
}

# 执行查询并将结果存入变量
$queryResult = Invoke-Sqlcmd @Params

# 空结果校验,避免后续取值报错
if (-not $queryResult) {
    Write-Error "未查询到符合条件的记录,请检查查询条件"
    exit 1
}

# 读取VMStatus字段值存入指定变量
$VMStatus = $queryResult.VMStatus

# 后续if/else判断+更新逻辑示例
if ($VMStatus -eq 'Running') {
    # 构造更新语句
    $updateQuery = "UPDATE Sys_Mst_VMProperties SET VMStatus = 'Stopped' WHERE idVMProperties = 1961"
    # 复用连接参数替换查询语句执行更新
    $updateParam = $Params.Clone()
    $updateParam.Query = $updateQuery
    Invoke-Sqlcmd @updateParam
} else {
    Write-Host "当前VM状态为 $VMStatus,不满足更新条件"
}

注意事项

  • 执行脚本前请确认SqlServer模块已正确导入,否则Invoke-Sqlcmd命令无法正常调用
  • 拼接UPDATE语句时注意转义字符串中的单引号等特殊字符,避免SQL语法错误
  • 生产环境建议不要在脚本中硬编码数据库密码,可使用Azure Key Vault等服务存储敏感凭据

内容的提问来源于stack exchange,提问作者Lokesh M

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 19:30:10