Powershell将空内容和非空内容添加到一个CSV中


  • 我需要在一个CSV中包含"已安装"one_answers"未安装"数据
  • 我想我需要加入一个-OR逻辑运算符来包含TRUE/FALSE在一个CSV中输出。我还不知道该怎么做
  • 有一个文件夹包含许多*ServerData文件,这些文件包含具有可能重复的KB
  • 每个服务器都有一个*ServerData文件,可能有重复的文件
  • 我想测试它们中是否有KB2151757和KB4556403
  • 然后将结果输出到状态为Installed或Not的csv已安装
  • 目前,它只返回已安装KB的计算机的列表
  • 如果找不到$patch,则它当前不返回任何内容(null(
  • 对于搜索到的每台$计算机,它都需要返回[PCustomObject]

我在想,也许我只需要使用一个函数来查找"已安装"和一个函数查找"未安装",并将结果添加到一起即可导出。我知道怎么做。我觉得一定有更简单的方法。

单击查看CSV 的示例

$computers = Get-Item -path F:*ServerData | Select-Object -ExpandProperty basename
$patch = gc -path F:*ServerData | Sort-Object -Unique | Select-String KB2151757, KB4556403 #'KB(d+)'
$output = ForEach ($computer in $computers) {
ForEach ($kb in $patch) { 
if ($null -eq $patch){   
[PSCustomObject]@{
Status = 'Not Installed' 
Server = $computer
KB = $kb          
} 
} else{  
[PSCustomObject]@{        
Status = 'Installed'  
Server = $computer
KB = $kb
} 
}
}
} 
$output | Export-csv C:KB-Report.txt -notypeinformation -delimiter ',' -encoding utf8

如果您首先按照相关的计算机名称对文件进行分组,那么过程就变得简单了(伪代码(:

每台计算机的
  • 每个ExpectedPatch的
      • 如果计算机的ServerData包含ExpectedPatch
        • 计算机上ExpectedPatch状态为"Installed"的输出对象
      • 其他
        • 计算机上ExpectedPatch状态为"NotInstalled"的输出对象

所以让我们试一试:

# Define the articles we're looking for
$ExpectedPatches = 'KB2151757', 'KB4556403'
# Enumerate and group data files by computer name, output as hashtable
# The resulting hashtable will have the computer name is Name and the associated files as its value
$ServerDataPerComputer = Get-Item -Path F:*ServerData |Group BaseName -AsHashtable
foreach($Computer in $ServerDataPerComputer.GetEnumerator())
{
foreach($Patch in $ExpectedPatches)
{
# Pipe all the file references to Select-String, look for the KB ID, return after the first match if any
$Status = if($Computer.Value |Select-String "b$Patchb" |Select-Object -First 1){
'Installed'
}
else {
# Select-String didn't find the KB ID in any of the files
'NotInstalled'
}

[pscustomobject]@{
Status = $Status
Server = $Computer.Name
KB = $Patch
}
}
}

相关内容

  • 没有找到相关文章