PowerShell脚本列出集合中的项目

时间:2010-03-10 16:35:53

标签: sql-server powershell

我是PowerShell的新手,正在尝试查询我的SQL服务器。我想到了创建一个新的psdrive,然后导航到数据库等,并有一行代码

  

$ dbs =(get-childitem   SQLSERVER:\ SQL \ SERVER \ INSTANCE \数据库)

当我将$ dbs传递给foreach时,我如何获得数据库对象集合的结果?我正在尝试阅读我的测试数据库的扩展属性。

这个单一查询给出了我想为每个数据库重复的结果。

  

设置位置   DRIVENAME:\数据库\ beagle_test \ extendedproperties   get-childitem |选择displayname,   值

非常感谢任何帮助。

5 个答案:

答案 0 :(得分:1)

我没有SQL服务器方便试试这个。让我知道结果

设置位置DRIVENAME:\数据库

Get-ChildItem | %{Get-ChildItem $(“$ _。Name \ extendedproperties”)|选择DisplayName,Value}

答案 1 :(得分:1)

试试这个

设置位置DRIVENAME:\数据库

Get-ChildItem | foreach-object {if(Test-Path $(“$ .Name \ extendedproperties”)){Get-ChildItem $(“$ .Name \ extendedproperties”)|选择DisplayName,Value}}

这里的第二行是单一陈述。我正在做的是检查是否存在Extendedproperties然后获取子项。

答案 2 :(得分:1)

怎么样:

dir sqlserver:\sql\ServerName\InstanceName\Databases\*\ExtendedProperties\* | 
  select @{Name="Database";Expression={$_.Parent.Name}}, Name, Value

答案 3 :(得分:0)

如何:

dir SQLSERVER:\SQL\Server\Instance\databases\*\extendedproperties\* | % {select $_.displayname, $_.value}

答案 4 :(得分:0)

所以,很多年后,我正在查看自己的SO统计数据,并看到了这个古老的问题和数据,表明我的Powershell技能自2010年以来有所增长。

用例早已消失,但我认为我想要实现的目标是:

foreach ($db in $SMOServer.databases | Where-Object status -eq 'normal') {
    $db.ExtendedProperties | Select-Object @{name = "DBName"; expression = {$db.Name}}, name, value
}

给出如下结果:

DBName                 Name                                 Value
------                 ----                                 -----
AdventureWorks2014     MS_Description                       AdventureWorks 2014 Sample OLTP Database
AdventureWorks2016     MS_Description                       AdventureWorks 2016 Sample OLTP Database