Скрипт Powershell для чтения данных из 2 столбцов из CSV-файла - PullRequest
0 голосов
/ 03 июля 2018

Я пытаюсь написать сценарий PowerShell, чтобы получить 2 столбца файла CSV:

ProductName          ProductCode
-----------------------------------------------------------
Java 7 Update 67     {26374892-xxxx-xxxx-xxxx-123456789012}
Java 8  Update 25    {26374892-xxxx-xxxx-xxxx-902341562789}

Я хочу получить только значения столбца ProductCode для использования в цикле foreach.

Я пробовал ниже:

$code1 = Get-Contect %path% | Foreach-Object {
    $_ -split '\s+' | Select-object -skip 1 | Select-Object -Last 1
} 

foreach($code in $code1){ write-host $code } 

Я получаю ниже вывода

67,{232424-55567-8879-xxxxxxx} 
25,{324356456-5674-xxxx-xxxxxx}

Но я хочу выводить только коды товаров, например

{3245345345-3454-56656757-xxxxx}

Ответы [ 2 ]

0 голосов
/ 03 июля 2018

Возможно, вы захотите посмотреть, как вы получаете эту информацию, так как вам, вероятно, будет легче отфильтровать информацию, которую вы хотите получить в источнике ...

Использование java в качестве примера, но процесс может работать с чем угодно:

$java = Get-WMIObject Win32_Product | Where-Object { $_.Name -Like "java*" }

$java будет содержать информацию о соответствующих установках, вы можете просто выбрать необходимое свойство и сохранить его в файл:

$java | Select-Object -ExpandProperty IdentifyingNumber | Out-File C:\folder\java.txt

Который даст вам файл вроде:

{26374892-xxxx-xxxx-xxxx-123456789012}
{26374892-xxxx-xxxx-xxxx-902341562789}
0 голосов
/ 03 июля 2018

Это действительно не похоже на CSV. Я бы сказал, что самый простой способ сделать это примерно так:

Get-Content %path% | Foreach-Object { $_ -split '\s+' | Select-Object -Last 1 }

Таким образом, вы получите последний объект после разбиения строки на несколько пробелов

пс. если вам нужно пропустить заголовок, вы можете добавить | Select-Object -Skip 1 после get-content
имп. если import-csv разрешает регулярное выражение в delimiter, import csv будет проще в использовании, но я сомневаюсь, что это позволяет. ЧГП. у меня работает:

> cat .\Untitled-2.txt
ProductName ProductCode
Java 7 Update 67     {26374892-xxxx-xxxx-xxxx-123456789012}
Java 8  Update 25    {26374892-xxxx-xxxx-xxxx-902341562789}
> Get-Content .\Untitled-2.txt | select-object -skip 1 | Foreach-Object { $_ -split '\s+' | Select-Object -Last 1 }
{26374892-xxxx-xxxx-xxxx-123456789012}
{26374892-xxxx-xxxx-xxxx-902341562789}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...