PowerShell :: Microsoft.Azure.Commands.Sql.Database.Model.AzureSqlDatabaseModel.DatabaseName [重复]

2024-01-09

我编写了一个脚本,允许我查询整个 Azure 数据库公园:

#$ErrorActionPreference = 'SilentlyContinue'
# Connect to Azure
$azureAccount = Connect-AzAccount 
# Get Azure Access Token (we will use this to query the databasees)
#$azureToken = Get-AzAccessToken -ResourceUrl https://database.windows.net
$access_token = (Get-AzAccessToken -ResourceUrl https://database.windows.net).Token
# Queries will be picked up from here
$folderPath = '.\Queries'
# Choose how to format each date ("yyyy-MM-dd") or ("yyyy-MM-dd HH:mm:ss")
$DateTime = (Get-Date).ToString("yyyy-MM-dd")
# List Azure Sunscriptions
Get-Azsubscription | ForEach-Object -Begin { $a = 1 } -Process {"$a $($_.Name)"; $a++}
$SubscriptionChoice = Read-Host -Prompt "Copy/paste the name of the Subscription that you want to investigate. If more than one separate them by a coma, Type `"All`" if you want to target all of them"
# Iterate into subscriptoins and print names
foreach ($gs in $SubscriptionChoice) {
    Select-Azsubscription -Subscription "$gs" | Out-Null
    Write-Host "Let's browse into Azure Sunscription: " -NoNewline
    Write-Host (Get-AzContext).Subscription.Name -ForegroundColor green
    # Fins all Azure SQL Server
    Get-AzSqlServer | ForEach-Object -Begin { $a = 1 } -Process {"$a $($_.ServerName)"; $a++}
    $SqlServerChoice = Read-Host -Prompt "Copy/paste the name of the SQL Server that you want to investigate. If more than one separate them by a coma, Type `"All`" if you want to target all of them"
    
    if ($SqlServerChoice = "All"){
        $SqlServerChoice = Get-AzSqlServer
        }
    
    Foreach ($server in $SqlServerChoice){
        $DatabaseChoice = Get-AzSqlDatabase -ServerName $server.ServerName -ResourceGroupName $server.ResourceGroupName | Where-Object DatabaseName -NE "master"
        Foreach ($database in $DatabaseChoice){
            (Get-ChildItem $folderPath | sort-object {if (($i = $_.BaseName -as [int])) {$i} else {$_}} ).Foreach{
            Invoke-Sqlcmd -ServerInstance $server.FullyQualifiedDomainName -Database $database.DatabaseName -AccessToken $access_token -InputFile $psitem.FullName | Export-Csv -Path ".\Results\$psitem.csv" -Append -NoTypeInformation
            write-host "Executing $psitem on $database.DatabaseName"
            }
        }
    }   
}

然而,每次对数据库执行查询时,写入主机都会返回:

Executing DTU_to_vCore.sql on Microsoft.Azure.Commands.Sql.Database.Model.AzureSqlDatabaseModel.DatabaseName

这里有一张图片:

此写入主机来自以下行:

write-host "Executing $psitem on $database.DatabaseName"

其中您可以找到两个变量:

  • $psitem:这是包含查询的文件的名称
  • $database.数据库名称:这应该是数据库名称,但不是打印数据库名称而是打印Microsoft.Azure.Commands.Sql.Database.Model.AzureSqlDatabaseModel.DatabaseName

为什么两个变量之一没有被解释?


您需要将变量属性封装在子表达式运算符中$().

write-host "Executing $psitem on $($database.DatabaseName)"

这是因为只有简单的变量才会在可扩展字符串中扩展。

参考

只有简单的变量引用可以直接嵌入到 可扩展字符串。使用数组索引或成员的变量引用 访问必须包含在子表达式中。

Source: about_引用_规则 https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_quoting_rules?view=powershell-7.2

子表达式运算符 $( )

返回一个或多个语句的结果。对于单个结果, 返回一个标量。对于多个结果,返回一个数组。用这个 当您想在另一个表达式中使用一个表达式时。为了 例如,将命令的结果嵌入字符串表达式中。

PS> "Today is $(Get-Date)"
Today is 12/02/2019 13:15:20

PS> "Folder list: $((dir c:\ -dir).Name -join ', ')"
Folder list: Program Files, Program Files (x86), Users, Windows

Source: about_Operators https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_operators?view=powershell-7.2

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PowerShell :: Microsoft.Azure.Commands.Sql.Database.Model.AzureSqlDatabaseModel.DatabaseName [重复] 的相关文章

随机推荐

  • 以编程方式将元素拖放到另一个元素上

    使用 jQuery UI 是否可以使用 JavaScript 执行拖放操作 Example http jsfiddle net KFRu9 单击链接后 将 pony并将其放入 box 我尝试过触发拖动事件 但这似乎不起作用 pony tri
  • javascript - 如何在 firebase 中使用承诺?

    最近我被一个问题困扰 不知道如何解决 我问this https stackoverflow com questions 47775150 javascript then executing before the loop completes
  • 将占总数百分比的列添加到 Pandas 数据框中

    我有一个正在做的数据框groupby 来获取列值的计数 我正在尝试为 总计百分比 添加一个附加列 我不知道如何实现这一点 我查看了一些 groupby 选项 但似乎找不到任何合适的选项 我的数据框如下所示 DAYSLATE DAYSLATE
  • Xcode 10 'xxx' 在不同模块中有不同的定义;模块“xx”中的定义第一个区别是函数体

    In Xcode 9 just an warming update to Xcode 10 changed to error 该错误意味着ControllerImports h声明一个名为的函数 xxx 已经声明在UIKit BJL M9D
  • 出现错误变量 <变量名称> 未声明或从未分配

    我使用 Visual Studio 2008 在 winforms C 中实现了一个大表单 在对话框的大部分工作正常之后 当我尝试打开设计器时 它开始显示很多错误信息 如标题所示 该变量未声明或从未分配 我为很多以前工作正常的控件得到了这个
  • ReactJs 选择添加默认值

    如果用户不在 ReactJs 中触摸它 我想存储选择的默认值 这怎么可能
  • R 中的随机子采样

    我是 R 新手 因此我的问题可能非常简单 我有 40 个拥有丰富浮游动物的地点 我的数据如下所示 列是物种丰度 行是位点 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 85 0 0 0
  • .NET Core 2.0 身份和 jwt?

    我一直在四处寻找并尝试对 NET Core Identity 进行更多研究 和 Jwt json Web 令牌 我一直在我的 NET Core 2 0 应用程序中使用默认身份作为身份验证 授权 到目前为止它运行良好 我遇到了障碍 我认为这是
  • 在main方法中调用Comparator参数

    我正在实现插入排序方法 这是我的代码的要求 insertSort 方法是一个静态方法 不返回任何内容 它有两个参数 一个通用数组和一个比较器 通用 它使用合并排序算法对通用数组进行排序 我的问题是 在 main 方法中调用时 比较器参数 c
  • 如何检测TMenuItem右键单击?

    平台 delphi 2010 将 Tmainmenu 拖放到 form1 上 将 Tpopupmenu 拖放到 form1 上 添加 mainmenu1 和 popupmenu 项目 主菜单 gt 文件 gt 项目1 弹出菜单 gt 弹出项
  • GLSL:如何执行类似 switch 的语句

    我想根据传递到着色器的数据动态调用缓动 所以用伪代码来说 var easing easings easingId var value easing point 我想知道在 GLSL 中完成此任务的最佳方法 我可以以某种方式使用 switch
  • VSCode:git staging 时触发organizeImports

    我喜欢 VSCode 中的自动组织功能 但让它在每次保存时都执行此操作给我带来了一些麻烦 editor codeActionsOnSave source organizeImports true 当我暂存导入时 是否可以设置一些 git h
  • 将 ObjectAid 安装到 eclipse LUNA 时出现错误

    我有 eclipse LUNA 我正在尝试安装 ObjectAid 来构建 UML 图 当我尝试安装它时 出现以下错误 An error occurred while collecting items to be installed ses
  • React Native:完成拖动后获取元素的实际 x,y 坐标(react-native-gesture-handler)

    我正在使用这个库 https github com software mansion react native gesture handler https github com software mansion react native g
  • 有没有一种正则语言来表示正则表达式?

    具体来说 我注意到正则表达式的语言本身并不是正则的 因此 我无法使用正则表达式来解析给定的正则表达式 我需要使用解析器 因为正则表达式本身的语言是上下文无关的 有没有什么方法可以用可以使用正则表达式解析结果字符串的方式来表示正则表达式 注意
  • 快速简单的图像哈希算法

    我需要一个 最好是简单且快速的 图像哈希算法 哈希值用于查找表 而不用于加密 一些图像是 计算机图形 即纯色填充矩形 光栅化文本等 而也有 摄影 图像 包含丰富的色谱 大部分平滑 具有合理的噪声幅度 我还希望哈希算法能够应用于特定的图像部分
  • 使用JFrame作为自定义输入框

    我正在开发一个基于 java swing 的应用程序 其中我有两个JFrames A 这是主窗口 并且B 这被称为A 我需要做的是 在A call B 获取用户输入B并将该输入传递给A以某种方式 然后处理它 我尝试过的一切都失败了 据我所知
  • MySQL 连接器 NO_CIPHERS_AVAILABLE 错误

    我正在使用 MySQL 连接器为我的简单 python 应用程序创建连接 但是每次运行它时 它都会失败并返回以下错误 2055 Lost connection to MySQL server at databaseHost system e
  • ResourceManager 包 - 包未正确加载

    我在 VS2015 和 cordova 项目中遇到问题 当天早些时候 我的项目进展顺利 但是 我将一个项目移动到一个新文件夹 现在 VS2015 无法正常工作 它正在运行 但不知何故 webessentials 被卸载 我的 gulpfil
  • PowerShell :: Microsoft.Azure.Commands.Sql.Database.Model.AzureSqlDatabaseModel.DatabaseName [重复]

    这个问题在这里已经有答案了 我编写了一个脚本 允许我查询整个 Azure 数据库公园 ErrorActionPreference SilentlyContinue Connect to Azure azureAccount Connect