【发布时间】:2021-12-15 18:04:25
【问题描述】:
$OUpath = @(
"OU=example,OU=Parent OU,DC=domain name,DC=domain prefix",
"OU=exam.ple,OU=Parent OU,DC=domain name,DC=domain prefix",
"OU=example1,OU=Parent OU,DC=domain name,DC=domain prefix",
"OU=example2,OU=Parent OU,DC=domain name,DC=domain prefix",
"OU=example3,OU=Parent OU,DC=domain name,DC=domain prefix",
"OU=example4,OU=Parent OU,DC=domain name,DC=domain prefix",
"OU=example5,OU=Parent OU,DC=domain name,DC=domain prefix",
"OU=example6,OU=Parent OU,DC=domain name,DC=domain prefix",
"OU=example7,OU=Parent OU,DC=domain name,DC=domain prefix",
"OU=example8,OU=Parent OU,DC=domain name,DC=domain prefix",
"OU=example9,OU=Parent OU,DC=domain name,DC=domain prefix",
"OU=CA,OU=Parent OU,DC=domain name,DC=domain prefix",
"OU=CAB,OU=Parent OU,DC=domain name,DC=domain prefix",
"OU=Ara,OU=Parent OU,DC=domain name,DC=domain prefix",
"OU=Gil,OU=Parent OU,DC=domain name,DC=domain prefix",
"OU=Kbi,OU=Parent OU,DC=domain name,DC=domain prefix",
"OU=Cieux,OU=Parent OU,DC=domain name,DC=domain prefix",
"OU=liz,OU=Parent OU,DC=domain name,DC=domain prefix",
"OU=mes,OU=Parent OU,DC=domain name,DC=domain prefix",
"OU=IO,OU=Parent OU,DC=domain name,DC=domain prefix",
"OU=SE,OU=Parent OU,DC=domain name,DC=domain prefix",
"OU=SC,OU=Parent OU,DC=domain name,DC=domain prefix")
foreach ($i in $OUpath){
$fname= $i.Substring(3,9) + ".csv"
Get-ADComputer -Filter * -Property * -SearchBase $i.toString() |
Select-Object Name,OperatingSystem,OperatingSystemVersion |
Export-CSV $fname -NoTypeInformation -Encoding UTF8
}
备注:OU=exam.ple with $fname= $i.Substring(3,9) + ".csv" 由于 ou 名称中的点,所以不会给出 excel csv 文件。
问题:是否可以生成 1 个具有不同工作表的 excel 文件?并将数据直接转换成excel表格?
【问题讨论】:
-
所以您的实际问题是如何从您发布的 OU 列表中获取有效的文件名?如果是这样...请为每个输入列表项发布您想要的结果。
-
欢迎来到 Code Review@SE。 Nikso,重要的事情值得命名。虽然有用的命名并不是从建模到编码最简单的部分,但根本没有名称(文字)根本没有帮助,会产生贬义的名称,例如 naked constants 或 magic numbers i>:
3和9有什么意义? -
@Lee_Dailey 我的问题是是否可以在 excel 工作表中获取结果,而不是生成多个 excel 文件。该代码实际上正在工作。它会生成 excel 文件,除了 ou 名称中带有点的文件,它会生成另一种奇怪的文件类型。我只需要手动删除点来修复它。对于输出,我想将所有返回的计算机重新组合到一个 excel 文件中,并在不同的 excel 工作表中分隔。谢谢你的建议,亲切的问候。
-
请随意to self-answer your question(稍后也接受)。
-
.Substring()的第二个参数是指定的长度,而不是结束位置。另外,如果你只想要 3 个属性,不要做-Property *,而只要求默认不返回的属性,比如Name。使用星号将使 cmdlet 收集 所有 属性,这会耗费时间和内存。
标签: excel powershell active-directory ldap