gpt4 book ai didi

powershell - 在Powershell的2列中显示CSV文件

转载 作者:行者123 更新时间:2023-12-03 01:30:12 25 4
gpt4 key购买 nike

我想读取2列的csv文件,当我打开Excel时,它将显示2列显示的CSV文件的信息。

实际上,我只显示一列以下代码:

Function Read-File {
Param([string]$file, [string]$head)
if (Test-Path $file) {
Write-Verbose "$file exists, importing list."
$data = Import-Csv -Path $file
$s = @()
if ($data.$head) {
foreach ($device in $data) {
try {
$s += $device.$head
Write-Verbose -Message "$device.$head"
} catch {
Write-Error -Message "Failed to add $device to list."
}
}
} else {
Write-Error -Message "No such column, $head, in CSV file $file."
}

return $s
}
}

$list = Read-File $file $fileColumn


所以现在我想这样做,但是在2栏中,我是PowerShell的初学者,所以我会提供一些帮助:)
谢谢

这是我的CSV文件:
Asset Number, Serial Number
cd5013172cffd6a317bd2a6003414c1,N5WWGGNL
8df47f5b1f1fcda12ed9d390c1c55feaab8,SN65AGGNL
dc0d1aaba9d55ee8992c657,B2NGAA3501119


我只是想在我的excel的2列上同时显示那些( Assets 号和序列号),所以不用担心那些信息根本不敏感,所以没关系:)

最佳答案

  • 使用 Select-Object 从输入对象中提取多个属性(包装在自定义对象实例[pscustomobject]中)。
  • 使用函数的隐式输出-无需首先在数组中收集结果,尤其是不要通过使用+=低效率地构建它来进行操作,后者在幕后会在每次迭代中创建一个新数组。
  • 注意,从PowerShell中的函数返回(输出)数据永远不需要return。任何未捕获,禁止或重定向输出的命令都会影响函数的整体输出。
  • Function Read-File {

    # Not that $column (formerly: $head) now accepts an *array* of strings,
    # [string[]]
    Param([string] $file, [string[]] $column)

    if (Test-Path $file) {

    Write-Verbose "$file exists, importing list."

    # Import the CSV file, create custom objects with only the column(s)
    # of interest, and output the result.
    # Also store the result in variable $result via -OutVariable, for
    # inspection below.
    Import-Csv -Path $file | Select-Object -Property $column -OutVariable result

    # If at least 1 object was output, see if all columns specified exist
    # in the CSV data.
    if ($result.Count) {
    foreach ($col in $column) {
    if ($null -eq $result[0].$col) {
    Write-Error -Message "No such column in CSV file $file`: $column"
    }
    }
    }

    }

    }

    # Sample call with 2 column names.
    $list = Read-File $file 'Asset Number', 'Serial Number'

    然后可以将 $list传递给 Export-Csv以创建新的CSV文件,您可以在Excel中打开该文件:
    # Export the selected properties to a new CSV file.
    $list | Export-Csv -NoTypeInformation new.csv

    # Open the new file with the registered application, asssumed to be Excel.
    Invoke-Item new.csv

    关于powershell - 在Powershell的2列中显示CSV文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58995913/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com