gpt4 book ai didi

powershell - Powershell 导入-CSV 的问题

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

主脚本

$Computers = Get-Content .\computers.txt

If ( test-path .\log.txt ) {
$Log_Successful = Import-CSV .\log.txt | Where-Object {$_.Result -eq "Succesful"}
} ELSE {
Add-Content "Computer Name,Is On,Attempts,Result,Time,Date"
}
$Log_Successful | format-table -autosize

问题:

Log_Successful."Computer Name"工作正常,但如果我将 4 更改为以下内容
$Log_Successful = Import-CSV .\log.txt | Where-Object {$_.Result -eq "Failed"}

Log_Successful。“计算机名称”不再有效......任何想法为什么?

数据集
Computer Name,Is On,Attempts,Result,Time,Date
52qkkgw-94210jv,False,1,Failed,9:48 AM,10/28/2012
HELLBOMBS-PC,False,1,Successful,9:48 AM,10/28/2012
52qkkgw-94210dv,False,1,Failed,9:48 AM,10/28/2012

最佳答案

如果“成功”,则返回单个对象。它包含属性“计算机名称”。如果“失败”,则返回一个包含两个对象的数组。它(数组本身)不包含属性“计算机名称”。在 PowerShell v3 中,在某些情况下可以使用符号 $array.SomePropertyOfContainedObject但在 PowerShell v2 中,它始终是一个错误。这就是你可能看到的。

您应该遍历结果对象数组,例如foreach($log in $Log_Successful) {...}和访问属性 $log对象。

还有最后一个提示。为了保证Import-Csv的结果调用始终是一个数组(不是 null 或单个对象)使用 @()运营商。

修复后的代码是:

$logs = @(Import-Csv ... | where ...)
# $logs is an array, e.g. you can use $logs.Count

# process logs
foreach($log in $logs) {
# use $log."Computer Name"
}

关于powershell - Powershell 导入-CSV 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13106327/

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