在csv文件powershell中查找特定值

oyxsuwqo  于 2022-12-06  发布在  Shell
关注(0)|答案(1)|浏览(239)

所以我有点新的PS,我已经花了整个上午试图弄清楚这一点,并寻找类似的问题/答案在这里和谷歌上。
基本上这就是我的剧本:

$value = $env:COMPUTERNAME
$csv =  Import-Csv -Path '\\UNC\PATH\file.csv'
$props =  'CsSystemFamily','CsDNSHostName', 'CsManufacturer' 

Get-ComputerInfo | Select-Object -Property $props | Export-Csv -Path $csv -NoTypeInformation -       Delimiter ';' -Append

我将其部署为GPO,因为我需要从某些OU收集此特定数据。问题是,我希望首先检查计算机名是否存在于CsDNSHostName列中,以便我的脚本不会两次添加同一台计算机。
先谢谢你,
我试过很多方法,但最后发现的是:

$value = $env:COMPUTERNAME
if ($file-contains $value) {

write-host 'Computer name already exists'
} else {
Get-ComputerInfo | Select-Object -Property $props | Export-Csv -Path $csv -NoTypeInformation -     Delimiter ';' -Append

}
这不semm工作,因为它将只是跳过if,并直接转到else

bihw5rsg

bihw5rsg1#

-contains是可以使用的正确运算符,但必须将其应用于CsDNSHostName属性(列)值的数组,这很容易做到,这要归功于member-access enumeration

$props =  'CsSystemFamily','CsDNSHostName', 'CsManufacturer' 
$csvFile = '\\UNC\PATH\file.csv'
$csv = Import-Csv $csvFile -Delimiter ';'

# $csv.CsDNSHostName returns an array of 
# all CsDNSHostName column (property) values.
if ($csv.CsDNSHostName -contains $env:COMPUTERNAME) {
  Write-Host 'Computer name already exists'
} else {
  Get-ComputerInfo | 
    Select-Object -Property $props |
    Export-Csv $csvFile -NoTypeInformation -Delimiter ';' -Append
}

相关问题