powershell显示变量全局?

时间:2014-02-25 11:18:03

标签: powershell foreach sql-server-2012 global-variables

为什么没有显示任何内容?

$result = foreach($db in sqlps ls SQLSERVER:\\SQL\\MYSERVER\\Databases) {
    foreach($group in $db.FileGroups) {
        write @{Database=$group}
    }
}
$result | % { $_.Database }

但是这个可行吗?

$result = foreach($db in sqlps ls SQLSERVER:\\SQL\\MYSERVER\\Databases) {
    write @{Database=$db}
}
$result | % { $_.Database}

我该如何解决?

编辑:

可行,但如何显示结果,例如'NameMyBase'='状态'

  

块引用   Get-ChildItem SQLSERVER:\ SQL \ BACKUP1 \ ARCSERVE_DB \ Databases |选择文件组   块引用

我只有

然而,“select -Expand FileGroups”不起作用:找不到属性“FileGroups-Expand”。

2 个答案:

答案 0 :(得分:2)

sqlps的默认输出格式是文本,因此您的命令sqlps ls SQLSERVER:\\SQL\\MYSERVER\\Databases生成一堆字符串(没有FileGroups属性)而不是您看起来的对象期待。

另外,我认为您的路径缺少实例。 \SQL\HOSTNAME\Databases应该引发错误(或者至少它会对我造成错误)。我不得不使用\SQL\HOSTNAME\INSTANCE\Databases

尝试这样的事情:

Add-PSSnapin SqlServerProviderSnapin100

Get-ChildItem SQLSERVER:\SQL\MYSERVER\INSTANCE\Databases |
    select -Expand FileGroups

该管理单元添加了SQLSERVER:提供程序,因此您可以使用Get-ChildItem来访问子对象。

编辑:对于SQL Server 2012,应该有一个loadable sqlps module

Import-Module 'sqlps' -DisableNameChecking

我无法访问SQL Server 2012,因此我无法验证。

答案 1 :(得分:0)

非常感谢即使我是hva sql 2012,也可以使用acceess对象 我很喜欢'

这样的命令
  

块引用    sqlps ls SQLSERVER:\ SQL \ BACKUP1 \ ARCSERVE_DB \ Databases; foreach(Get-ChildItem中的$ Item){write @ {$ Item.Name = $ Item.Status}}   块引用

此comman列表包含根目录而不包含数据库的内容 我想做一个Set-Location但光标不移动它总是显示相同的东西,根

  

块引用    sqlps Set-Location SQLSERVER:\ SQL \ BACKUP1 \ ARCSERVE_DB \ Databases; foreach(Get-ChildItem中的$ Item){write @ {$ Item.Name = $ Item.Status}}   块引用

如果我使用的命令不在我的程序c ++中,而是使用shell提示符,则Set-Location工作正常。如何使用sqlps在 ONE LIN * E中使用Set-Location?