我想检查CSV文件中是否存在字符串。我正在尝试使用if ($PCname -in $logFileLocation) { write-output "true" } else { write-output "false" }但是,这总是返回FALSE。如何检查CSV文件中的值?
if ($PCname -in $logFileLocation) { write-output "true" } else { write-output "false" }
oxiaedzo1#
您可以在dir(Get-Childitem)的结果中集成查询
Get-Childitem
$Query = "yourString" $List = Get-Childitem *.CSV | Select-Object Name,@{Name="MatchesQuery"; Expression={($_ | Get-Content -raw) -match $Query}} $List
注意:$Query将被解释为正则表达式这样,您就会得到一个所有文件的列表,其中包含它是否与您的环境匹配的信息。这样,您可以在事后像这样进行过滤:$List | where {$_.MatchesQuery -eq $true}根据您的CSV,如果您不仅使用Get-Content,而且使用ConvertFrom-CSV并选择要搜索的列,则可能会更好、更可靠。此版本读取CSV并在“ComputerName”列中搜索您的$Query
$Query
$List | where {$_.MatchesQuery -eq $true}
Get-Content
ConvertFrom-CSV
$Query = "yourString" $List = Get-Childitem *.CSV | Select-Object Name,@{Name="MatchesQuery"; Expression={($_ | Get-Content -raw | ConvertFrom-CSV -Delimiter ";" | where {$_.ComputerName -eq "$Query").Count -gt 0}}} $List
bq3bfh9z2#
这可能会有所帮助:
$find = "some_string" Get-Content C:\temp\demo.csv | Select-String $find
2条答案
按热度按时间oxiaedzo1#
您可以在dir(
Get-Childitem
)的结果中集成查询注意:
$Query
将被解释为正则表达式这样,您就会得到一个所有文件的列表,其中包含它是否与您的环境匹配的信息。这样,您可以在事后像这样进行过滤:
$List | where {$_.MatchesQuery -eq $true}
根据您的CSV,如果您不仅使用
Get-Content
,而且使用ConvertFrom-CSV
并选择要搜索的列,则可能会更好、更可靠。此版本读取CSV并在“ComputerName”列中搜索您的
$Query
bq3bfh9z2#
这可能会有所帮助: