Powershell - отдельный вывод на основе сервера + экспорт в Excel - PullRequest
0 голосов
/ 24 июня 2019

Запуск сценария sql для списка баз данных.Вывод на powershell не разделяется.Как я мог разделить их на основе имени сервера.

$SERVERS = gc "C:\Users\listOfServers.txt"

foreach ($SERVER in $SERVERS) { 
 $InvokeParams = @{
 Server = $SERVER
 Database = 'test'
 Username = 'admin'
 Password = 'testpassword'
 InputFile = 'C:\business.sql'
}
Invoke-SqlCmd @InvokeParams 
}

Сейчас мой вывод выглядит так:

ValueDate: 1/30/2019 12:00:00 AM
PrevValueDate: 1/29/2019 12:00:00 AM
Count:100

ValueDate: 3/30/2019 12:00:00 AM
PrevValueDate: 3/29/2019 12:00:00 AM
Count:200

ValueDate: 4/30/2019 12:00:00 AM
PrevValueDate: 4/29/2019 12:00:00 AM
Count:2100

ValueDate: 11/30/2019 12:00:00 AM
PrevValueDate: 11/29/2019 12:00:00 AM
Count:12200

Цель: Сервер 1 (сервер вывода 1), сервер 2 (сервер вывода 2)

Iхотел бы добавить параметр, который дает имя сервера для каждого вывода - или сортировать как Id, чтобы отделить их.

Цель - экспортировать вывод в лист Excel - не работает на моменте

 $out = Invoke-SqlCmd @InvokeParams | Format-Table
 $path = 'C:\Users\test1.csv'
 $out | Export-Csv -Path $path 
 Invoke-Item -Path $path

1 Ответ

2 голосов
/ 24 июня 2019

Вы можете использовать рассчитанные свойства для достижения этого:

$SERVERS = gc "C:\Users\listOfServers.txt"

$out = foreach ($SERVER in $SERVERS) { 
    $InvokeParams = @{
        Server = $SERVER
        Database = 'test'
        Username = 'admin'
        Password = 'testpassword'
        InputFile = 'C:\business.sql'
    }
    Invoke-SqlCmd @InvokeParams | Select-Object -Property *, @{L='Server'; E={$SERVER}}
}

$path = 'C:\Users\test1.csv'
$out | Export-Csv -Path $path 
Invoke-Item -Path $path
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...