【发布时间】:2014-11-26 23:50:32
【问题描述】:
我一直在使用我编写的 PowerShell 代码来提取 AD 组及其名称、描述、成员和信息。出于某种原因,无论我使用带有 -Append 的输出标题格式还是 Export-CSV -notypeinformation,这两种方式都不会保存我的 AD 组所拥有的长信息字段。该信息是如此之长,以至于它打印在不同的行(一行或多行)上,这使得 16,000 个组的长列表搞砸了。而不是每行(当我将其导出到 excel 时)都在自己的行上,实际上几乎所有行都在多行上。当我必须手动修复所有这些时,这会变得很疯狂。
所以我的问题是,如何将“信息”字段中的所有数据保存在一个单元格中?
我使用的代码(我的部分代码)如下:
我做了一个标题格式:
Header = `
"Group ID Name" + "|" + `
"Description" + "|" + `
"Notes Field" + " |" + "Members" + "|" + "Member Count"
#Write out the header
$Header | Out-File $pathALL -Append
出口代码为:
$listing =`
$empty.Name + "|" + `
$empty.Description + "|" + `
$empty.info + "|" + `
$members
$listing | Out-File $pathALL -Append
这仍然弄乱了信息字段,因为显然有太多信息无法放入单元格中。所以我尝试了:
$emptys = get-adgroup -properties name, description, info -filter {name -like "AP*"} `
| Select name, description, info | Export-CSV "C:\Temp\groupsALL.txt" -notypeinformation
此打印版本仍然存在相同的问题,并且以这种方式分离所有数据也更加困难。在这种情况下,我怎样才能将其全部放入一个单元格中,或者至少将其余信息打印在下一个相邻单元格中?
已回答问题:我的信息字段有新行,因此我添加了 FOREACH:
foreach ($lines in $emptys.info){
$lines -replace "``n",""
}
并将我的打印更改为:
$listing =`
$empty.Name + "|" + `
$empty.Description + "|" + `
#$empty.Info + "|" + `
$lines + "|" + `
$members
【问题讨论】:
-
是字段太长的问题,还是数据中有换行符?如果有换行符,只需在输出到文件之前用另一个字符替换它们。
-
实际上...我的信息字段包含多行不同的信息。还没有听说有什么方法可以删除它们...嗯会调查一下
-
感谢您的回答。我找到了解决方法!!!
标签: powershell printing export