Изменение столбца в массиве - PullRequest
0 голосов
/ 18 декабря 2018

Я читаю в CSV-файле, который содержит 25 000 записей, и читаю каждый столбец в psobject.Вот что у меня получилось:

$file = Import-CSV .\server.csv
$tempobj = New-Object psobject -Property @{
    'Name' = $file.Name
    'Group' = $file.Group
}

Когда он запускается, я получаю нужные результаты, так как $file.Name содержит все имена серверов, а $file.Group содержит группы для серверов.,Однако моя проблема заключается в том, что мне нужно редактировать имена каждого сервера, не вмешиваясь в .Group.Вот пример того, как имя сервера выглядит как есть.

WindowsAuthServer @{wdk9870WIN}

Мне нужно удалить WindowsAuthServer @{ и WIN} из каждого имени сервера, оставив только имя сервера, или для этого примера, wdk9870.

Я пытался использовать функцию -replace ($tempobj.Name -replace "WindowsAuthServer @{",""), но для этого требуется, чтобы я сохранил результаты в новом массиве, который затем испортил или удалил .Group полностью

Есть ли другой способ сделать это?Я потерян.

1 Ответ

0 голосов
/ 18 декабря 2018

Предположим, ваш server.csv выглядит следующим образом:

"Name","Group"
"WindowsAuthServer @{wdk9870WIN}","Group1"
"WindowsAuthServer @{wdk9880WIN}","Group2"
"WindowsAuthServer @{wdk9890WIN}","Group1"
"WindowsAuthServer @{wdk9900WIN}","Group1"

И вы хотите изменить значения только в столбце Name, тогда что-то вроде этого, вероятно, сделает это:

Import-Csv .\server.csv | ForEach-Object {
    New-Object psobject -Property @{
        'Name' = ([regex]'@\{(\w+)WIN\}').Match($_.Name).Groups[1].Value
        'Group' = $_.Group
    }
}

Будет выведено:

Name    Group 
----    ----- 
wdk9870 Group1
wdk9880 Group2
wdk9890 Group1
wdk9900 Group1

Если вы хотите, вы можете просто передать эту информацию в командлет Export-Csv, чтобы сохранить его в виде нового файла CSV.Для этого просто добавьте | Export-Csv -Path .\server_updated.csv -NoTypeInformation к коду.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...