Powershell脚本,用于从文件中读取2列数据.csv



我正在尝试编写一个PowerShell脚本来获取csv文件的2列:

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

我只想获取要在 foreach 循环中使用的ProductCode列值。

我尝试了以下方式

$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}

这看起来不像CSV。我会说最简单的方法是这样的:

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

这样,您将在多个空格上拆分字符串后获得最后一个对象

如果您需要跳过标题,您可以在获取内容
PPS 后添加| Select-Object -Skip 1。 如果 import-csv 允许delimiter中的正则表达式,导入 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}

您可能想看看您是如何获得这些信息的,因为从源头过滤您想要的信息可能会更容易......

以java为例,但该过程可以处理任何内容:

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

然后$java将包含有关匹配安装的信息,您只需选择所需的属性并将其保存到文件中:

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

这将为您提供一个文件,例如:

{26374892-xxxx-xxxx-xxxx-123456789012} {26374892-xxxx-xx-xxxx-902341562789}

相关内容

  • 没有找到相关文章

最新更新