Powershell создает таблицу из пар ключ-значение с ключом в качестве заголовка столбца - PullRequest
0 голосов
/ 08 июля 2019

У меня есть несколько строк данных в скрипте powershell, которые выглядят следующим образом:

SSAS=PerformanceAnalysisService, Provider=SQLNCLI11.1;Data Source=LAP123;Integrated Security=SSPI;Initial Catalog=PerformanceDataMart:
SSAS=EnvironmentalAnalysisService, Provider=SQLNCLI11.1;Data Source=LAP123;Integrated Security=SSPI;Initial Catalog=EnvironmentalDataMart:

В настоящее время я использую:

ConvertFrom-String -Delimiter ";" -PropertyNames Server, Provider, Source, Security, Catalog.

Что дает мне:

Server                                                  Provider            Source                   Security                              
------                                                  --------            ------                   --------                              
SSAS=EnvironmentalAnalysisService, Provider=SQLNCLI11.1 Data Source=LAP123  Integrated Security=SSPI Initial Catalog=EnvironmentalDataMart:
SSAS=PerformanceAnalysisService, Provider=SQLNCLI11.1   Data Source=DEV-EDW Integrated Security=SSPI Initial Catalog=PerformanceDataMart: 

Я хотел бы создать таблицу с ключом в качестве заголовков столбцов или даже иметь возможность вырезать ключ из данных таблицы.

+------------------------------+-------------+-------------+-----------------+-----------------------+
|            SSAS              |  Provider   | Data Source |    Security     |    Catalog            |
+------------------------------+-------------+-------------+-----------------+-----------------------+
| EnvironmentalAnalysisService | SQLNCLI11.1 | LAP123      | Integrated SSPI | EnvironmentalDataMart |
| PerformanceAnalysisService   | SQLNCLI11.1 | LAP123      | Integrated SSPI | PerformanceDataMart   |
+------------------------------+-------------+-------------+-----------------+-----------------------+

Но есть ли способ идентифицировать имена ключей / столбцов и динамически вырезать их?

Конечный результат будет использоваться SQL.Поэтому было бы неплохо возвращать данные в виде отдельных столбцов или через запятую.

1 Ответ

1 голос
/ 08 июля 2019

ConverTo-Csv должен быть в состоянии сделать это, просто перенаправив вывод ConvertFrom-String на него.

> $in = "SSAS=PerformanceAnalysisService, Provider=SQLNCLI11.1;Data Source=LAP123;Integrated Security=SSPI;Initial Catalog=PerformanceDataMart:","SSAS=EnvironmentalAnalysisService, Provider=SQLNCLI11.1;Data Source=LAP123;Integrated Security=SSPI;Initial Catalog=EnvironmentalDataMart:"
> $in | ConvertFrom-String -Delimiter ";" -PropertyNames Server, Provider, Source, Security, Catalog | ConvertTo-Csv -NoTypeInformation -Delimiter ';'
"Server";"Provider";"Source";"Security"
"SSAS=PerformanceAnalysisService, Provider=SQLNCLI11.1";"Data Source=LAP123";"Integrated Security=SSPI";"Initial Catalog=PerformanceDataMart:"
"SSAS=EnvironmentalAnalysisService, Provider=SQLNCLI11.1";"Data Source=LAP123";"Integrated Security=SSPI";"Initial Catalog=EnvironmentalDataMart:"

Вы также можете заменить ConverTo-Csv на Export-Csv, если хотите сохранить содержимое в файл CSV, или вы можете перенаправить вывод ConvertTo-Csv в Out-File

Надеюсь, это поможет

...