我是PowerShell的新手,正在尝试查询我的SQL服务器。我想到了创建一个新的psdrive,然后导航到数据库等,并有一行代码
$ dbs =(get-childitem SQLSERVER:\ SQL \ SERVER \ INSTANCE \数据库)
当我将$ dbs传递给foreach时,我如何获得数据库对象集合的结果?我正在尝试阅读我的测试数据库的扩展属性。
这个单一查询给出了我想为每个数据库重复的结果。
设置位置 DRIVENAME:\数据库\ beagle_test \ extendedproperties get-childitem |选择displayname, 值
非常感谢任何帮助。
答案 0 :(得分:1)
设置位置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