【发布时间】:2019-01-21 19:08:42
【问题描述】:
我有一个 CSV 文件,其中包含 2 个字段,1. ComputerName 2. ErrorCode。它是从安全应用程序创建的。
我需要将 ComputerName 列表与 AD 进行比较。如果它处于活动状态,我需要将其导出到另一个 CSV 文件。
听起来很简单,但我不知道如何将错误消息也写入同一个文件。如果我可以读取 AD 并简单地删除不存在的行,那也很好,但我已经拥有了我需要的大部分内容。
我可以将列表分为存在于 AD 中的机器和不存在的机器,但它不会复制错误消息。
编辑以获得更多说明
在database-1.csv:
当我运行脚本时,输出如下所示,并且不会删除不活动的机器;
4140lw7,系统分区太小我使用的脚本会将 AD 中的活动与非活动区分开来,但前提是错误列不存在,即database-1.csv w/o Error 列:
这将创建以下内容:
exist.csv(活跃于 AD):
nonexist.csv(在 AD 中无效):
但如果错误代码在文件中,它将不起作用。我需要与机器名称关联的文件中的错误代码。
foreach ($computer in (Get-Content C:\apps\database-1.csv)) {
try {
$test = Get-ADComputer -Identity $computer -ErrorAction Stop
if ($test) {
Write-Output "$computer" | Out-File C:\apps\exist.csv -Append
}
} catch {
Write-Output "$computer" | Out-File C:\apps\Nonexist.csv -Append
}
}
【问题讨论】:
-
所以 database-1.csv 是一个包含两列的 csv。您使用 Get-Content 阅读它,每一行都是一个计算机名称。我认为您需要使用 Import-CSV 而不是 Get-Content。请提供database-1.csv的内容样本
-
什么错误信息?请为现有和缺少的计算机提供示例输入以及所需输出的示例。
-
也可以用
2>filename.txt写错误或者查看write-error -
格特,是的,是的。但它目前只使用机器名称。我只是不知道如何确保也导出错误代码。示例内容如说明 A 列有机器名称列表,B 列有和错误代码,即“系统分区太小”。
-
引用您的问题:“但我不知道如何将错误消息也写入同一个文件” 那么,再次,什么错误消息?另外,请再次edit您的问题并提供我要求您提供的 3 个样本。
标签: powershell csv