我不明白为什么我没有从
获取csv的数据$users=gc C:\0NIX\03SCRIPTS\TMP\OCH\old_users.txt
foreach ($user in $users)
{
get-aduser -identity $user -pr * | Select-Object name, samaccountname, telephonenumber |export-csv C:\0NIX\03SCRIPTS\TMP\1.csv -notype
}
当我破坏下面的内容时,使用out-file -append,它确实有数据
$users=gc C:\0NIX\03SCRIPTS\TMP\OCH\old_users.txt
foreach ($user in $users)
{
get-aduser -identity $user -pr * | Select-Object name, samaccountname, telephonenumber |out-file -append C:\0NIX\03SCRIPTS\TMP\1.txt
}
答案 0 :(得分:1)
您未在-Append
示例中使用export-csv
。我猜你用坏数据覆盖它(据说我原本期望你的输出文件中有一个结果)。请考虑以下示例,该示例简化整个流程并使用管道,以便不需要-Append
。
Get-Content "C:\0NIX\03SCRIPTS\TMP\OCH\old_users.txt" | ForEach-Object{
get-aduser -identity $_ -Properties telephonenumber | Select-Object name, samaccountname, telephonenumber
} | Export-Csv C:\0NIX\03SCRIPTS\TMP\1.csv -NoTypeInformation
我也想知道你是否在压制错误?检查通常为“继续”的$ErrorActionPreference
的结果
Get-Aduser
将不返回任何对象。我认为当没有产品时,你会期待空白输出。您需要在逻辑中进行一些错误检测以解决这些问题。不是唯一的方法,但我们让用户进入变量$result
。如果数据存在则沿管道传递。如果不是,我们也会创建一个空条目。
Get-Content "C:\0NIX\03SCRIPTS\TMP\OCH\old_users.txt" | ForEach-Object{
$result = get-aduser -identity $_ -Properties telephonenumber -ErrorAction SilentlyContinue
If($result){
$result | Select-Object name, samaccountname, telephonenumber
} Else {
New-Object -TypeName Psobject -Property @{
Name = $_
samaccountname = ""
telephonenumber = ""
}
}
} | Export-Csv C:\0NIX\03SCRIPTS\TMP\1.csv -NoTypeInformation