PowerShell脚本中$database.DatabaseName变量未正确解析问题
问题原因与解决方法
核心原因
你看到的Microsoft.Azure.Commands.Sql.Database.Model.AzureSqlDatabaseModel.DatabaseName是PowerShell无法直接解析属性访问时返回的类型限定属性名,通常出现在以下场景:
- 获取的
$database对象集合中,部分对象类型并非AzureSqlDatabaseModel,导致属性访问失败 - 在字符串拼接或
Write-Host中直接使用$database.DatabaseName时,PowerShell的解析逻辑出现偏差(比如对象嵌套或属性为脚本属性)
解决步骤
确认对象实际属性
执行以下命令查看$database的所有属性及对应值,验证DatabaseName是否为有效属性:$database | Get-Member -MemberType Property $database | Select-Object -Property DatabaseName, *强制解析属性值
若确认DatabaseName是有效属性,可通过以下方式确保正确取值:- 使用子表达式明确解析:
Write-Host "正在执行文件: $psitem,目标数据库: $($database.DatabaseName)" - 提前将属性值存入变量:
$dbName = $database.DatabaseName Write-Host "正在执行文件: $psitem,目标数据库: $dbName"
- 使用子表达式明确解析:
检查对象获取逻辑
如果你是通过Get-AzSqlDatabase类命令获取$database,确保命令返回的是标准AzureSqlDatabaseModel对象,而非包含元数据的包装对象。可通过$database.GetType().FullName确认对象类型。
内容的提问来源于stack exchange,提问作者Francesco Mantovani
相关产品推荐
相关产品推荐

