Объединение двух команд в одну и экспорт в файл CSV в Powershell - PullRequest
0 голосов
/ 17 ноября 2018

Ниже приведен код, который я использую для получения данных из выходных данных двух команд, затем я помещаю их в два отдельных массива. Когда я комбинирую массивы, вывод выглядит так, как я ожидал, но когда я выбираю и пытаюсь вывести, он имеет пропуски и не отформатирован правильно. Как я могу получить это для вывода хороший в CSV-файл?

Пример кода:

   $a = get-agentserver
$NewCSV = $a | ForEach-Object {
    New-Object PSObject -Prop @{
        'Client Name' = ($_."Name" -Split '\.(?!\d)')[0]
        'Policy Type' = $_."AgentServerType"
    'Backup State' = $_."BackupStatus"
    'logon' = $_."LogonAccountTestStatus"
    'account' = $_."LogonAccount"
            }
} | Select "Client Name","Policy Type","Backup State","logon","account"
#$NewCSV

$l = foreach($i in $a.name){
get-definition -agentserver $i}
$l | convertto-csv | out-file t1.csv
$m = import-csv t1.csv | select agentserver,name,selectionsummary
$defcsv = $m | foreach-object{
    new-object psobject -prop @{
        'Policy Name' = $_.Name
        'Backup Selection' = $_.selectionsummary
        }
} | select "Policy Name","Backup Selection"
#$defcsv

$hope = $NewCSV + $defcsv
$hope2 = $hope | select  "Client Name","Policy Name","Policy Type","Backup Selection"
$hope2

Ex output $ надежда (это выглядит правильно для меня)

Client Name  : Name
Policy Type  : Ndmp
Backup State : Unknown
logon        : Succeeded
account      : ndmp_user

Policy Name      : Diff Bakcup 
Backup Selection : COMMON, D: (Partial)

Ex вывод $ hope2 (что убивает меня, как исправить)

Client Name                   Policy Name                                     Policy Type Backup Selection
-----------                   -----------                                     ----------- ----------------
Name                                                                              Windows
Name                                                                              Windows
Name                                                                              Windows
Name                                                                              Windows
Name                                                                              Windows
Name                                                                              Ndmp
                              Diff Bakcup - Name       ,...                               COMMON, D: (Partial)
                              ArchiveJob_Backup_to_Tape                                   Name  \e$ (Partial), ...
                              Diff Bakcup - Name       ,...                               COMMON, D: (Partial)
                              ArchiveJob_Backup_to_Tape                                   Name\e$ (Partial), ...
                              Diff Bakcup - Name       ,...                               COMMON, D: (Partial)
                              Name Backup BLR_Pro...                                      /root_vdm/IN-BLR400-FS-C...

Я очистил свой код и попытался поместить выходные данные моей команды в одну переменную и перебрать ее за один раз, что выглядит намного лучше, но результат получился тот же, что и выше, в моем выводе $ hope2. Это оставляет большой пробел под двумя заголовками «Имя политики» и «Выбор резервной копии». Есть ли способ использовать регулярные выражения для удаления этих конкретных пробелов только под этими двумя столбцами в Powershell?

Это новый код, который я использую

$agentserver = get-agentserver
$agentserver | convertto-csv | select-object -skip 2 | out-file t2.csv
$agentserver = import-csv t2.csv -Header server,id,type,accountstate,logonaccount
$budefinition = foreach($i in $a.name){
get-backupdefinition -agentserver $i}
$budefinition | convertto-csv | out-file t1.csv
$converted_budef = import-csv t1.csv | select agentserver,name,selectionsummary
$a = $agentserver + $converted_budef
$NewCSV = $a | ForEach-Object {
    New-Object PSObject -Prop @{
        'Client Name' = ($_."server" -Split '\.(?!\d)')[0]
        'Policy Type' = $_."type"
    'Backup State' = $_."BackupStatus"
    'logon' = $_."LogonAccountTestStatus"
    'account' = $_."LogonAccount"
    'Policy Name' = ($_.Name -replace ","," ")
    'Backup Selection' = ($_.selectionsummary -replace ","," ")
                    }
} | Select "Client Name","Policy Name","Policy Type","Backup Selection"
$NewCSV 

Пример того, что я пытаюсь выполнить, выглядел бы так, что я мог бы затем использовать export-csv и получить хороший документ CSV.

Client Name Policy Name Policy Type Backup Selection
----------- ----------- ----------- ----------------
NAME         Diff Bakup Windows     Common D
NAME         Archive    Ndmp        /root_vdm/

После выполнения $ NewCSV | FL Я получаю вывод двух отдельных списков, как показано ниже, и мне нужно, чтобы они все были в одном. Любые идеи, как это исправить в моем коде выше?

Client Name      : Name
Policy Name      :
Policy Type      : Ndmp
Backup Selection :

Client Name      :
Policy Name      : Diff Bakcup 
Policy Type      :
Backup Selection : COMMON  D: (Partial)
...