Скрипт PowerShell для перечисления элементов в коллекции - PullRequest
2 голосов
/ 10 марта 2010

Я новичок в PowerShell и пытаюсь выполнить запрос к моему SQL-серверу. У меня появилась идея создать new-psdrive, а затем перейти к базам данных и т. Д., И у меня есть строка кода как

$ dbs = (get-childitem SQLServer: \ SQL \ SERVER \ ИНСТАНЦИИ \ базы данных)

когда я передаю $ dbs на foreach, как мне получить результаты коллекции объектов базы данных? Я пытаюсь прочитать расширенные свойства моей тестовой базы данных.

Этот единственный запрос дает результаты, которые я хочу повторить для каждой базы данных.

установленное местоположение Имя_накопителя: \ Базы данных \ beagle_test \ ExtendedProperties получить ребенка | выберите отображаемое имя, значение

любая помощь очень ценится.

Ответы [ 5 ]

1 голос
/ 11 марта 2010

Как насчет:

dir sqlserver:\sql\ServerName\InstanceName\Databases\*\ExtendedProperties\* | 
  select @{Name="Database";Expression={$_.Parent.Name}}, Name, Value
1 голос
/ 10 марта 2010

Попробуйте это

Set-Location DRIVENAME: \ Базы данных

Get-ChildItem | foreach-object {if (Test-Path $ ("$ .Name \ extendedproperties")) {Get-ChildItem $ ("$ .Name \ extendedproperties") | Выберите DisplayName, Value}}

Вторая строка здесь - это одно утверждение. Я проверяю, существуют ли расширенные свойства, а затем получаю дочерний элемент.

1 голос
/ 10 марта 2010

У меня нет сервера SQL под рукой, чтобы попробовать это. Дайте мне знать результат

Set-Location DRIVENAME: \ Базы данных

Get-ChildItem | % {Get-ChildItem $ ("$ _. Name \ extendedproperties") | Выберите DisplayName, Value}

0 голосов
/ 15 июля 2018

Итак, много лет спустя я изучаю свою статистику 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
0 голосов
/ 10 марта 2010

Как насчет просто:

dir SQLSERVER:\SQL\Server\Instance\databases\*\extendedproperties\* | % {select $_.displayname, $_.value}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...