удалить совпадающую строку в условии PowerShell - PullRequest
0 голосов
/ 23 ноября 2018

идея состоит в том, чтобы импортировать CSV, а затем, если значение "имя_хоста" содержит нулевое пространство, удаляет всю строку

    Function Last_NAS_Parse {

$Import_IP = Import-Csv -Path "$destination_RAW_NAS\audit_nas_8_$((Get-Date).ToString('yyyy-MM-dd')).txt" -Header @("date","infohostname","Version","SMTP","Value_1","Value_2","Value_3","Value_4","Value_5","Value_6","Value_7","Value_8","Value_9")
$Import_IP | ForEach-Object {
   if ( [string]::IsNullOrWhiteSpace($_.infohostname)


  }

Но не знаю, как я могу удалить строку после того, как это выбраноСпасибо.

Ответы [ 2 ]

0 голосов
/ 23 ноября 2018

IMO, вам не нужна функция, просто Where-Object:

$Header = ("date","infohostname","Version","SMTP","Value_1","Value_2","Value_3","Value_4","Value_5","Value_6","Value_7","Value_8","Value_9")
$Import_IP = Import-Csv -Path "$destination_RAW_NAS\audit_nas_8_$((Get-Date).ToString('yyyy-MM-dd')).txt" -Header $Header | 
   Where-Object {![string]::IsNullOrWhiteSpace($_.infohostname)}

Но, конечно, вы можете обернуть это в функцию
(но функция без переданных параметров и возвращаемых значений нене настоящая функция)

0 голосов
/ 23 ноября 2018

Зацикливайте результаты и сохраняйте только те объекты, для которых эта логическая оценка верна, и создавайте новый файл.Я полагаю, что для удаления строки из существующего файла вам необходимо преобразовать ее в XLS / X и получить к ней доступ как к объекту COM

$results = @()
Function Last_NAS_Parse {

    $Import_IP = Import-Csv -Path C:\path\to\file.csv
    $Import_IP | ForEach-Object {
        if ( [string]::IsNullOrWhiteSpace($_.infohostname)) 
        {
            Out-Null
        }
        else
        {
            $results += $_
        }
    }
}

Last_NAS_Parse
$results | Export-CSV "C:\export\path\of\newfile.csv"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...