Powershell 导出Csv将创建一个空文件

Powershell 导出Csv将创建一个空文件,powershell,export-csv,Powershell,Export Csv,我想将脚本的结果导出到新的CSV文件。不幸的是,导出Csv只创建了一个空文件。我想写主机有问题,不能保存到文件中 也许有一个选项可以将控制台的输出保存到txt/csv文件中 $Date = $((Get-Date).ToString('yyyy-MM-dd')) $Evaluation = { $Users = Get-ADUser -Filter 'enabled -eq $true' -SearchBase $OU -Properties mailNickname Wri

我想将脚本的结果导出到新的CSV文件。不幸的是,
导出Csv
只创建了一个空文件。我想写主机
有问题,不能保存到文件中

也许有一个选项可以将控制台的输出保存到txt/csv文件中

$Date = $((Get-Date).ToString('yyyy-MM-dd'))

$Evaluation = {
    $Users = Get-ADUser -Filter 'enabled -eq $true' -SearchBase $OU -Properties mailNickname

    Write-Host "Name;CAL Exchange"

    foreach ($User in $Users) {
        if ($User.mailNickName -eq $null) {
            $User.CALEX = "No"
        } else {
            $User.CALEX = "Yes"
        }
        Write-Host "$($User.Name);$($User.CALEX)"
    }
    Write-Host ""
    Write-Host "Count: $($Users.Count) Users"
}

$Evaluation_Department = {
    $OU = "OU=ofDepartment"
    & $Evaluation | Export-Csv -Path "C:\Support\$($Date)-Department.csv"
}
& $Evaluation_Department
除此之外,我将在文件中:

Name;CAL Exchange $($User.Name);$($User.CALEX) [...] $($User.Name);$($User.CALEX) Count: $($Users.Count) Users 名称CAL交换 $($User.Name)$($User.CALEX) [...] $($User.Name)$($User.CALEX) 计数:$($Users.Count)个用户
和$Evaluation\u部门
仅用于测试目的。

我想这就是您要找的

$date = $((Get-Date).ToString('yyyy-MM-dd'))    
$OU = "OU=_Users,CN=..."

$Users = Get-ADUser -Filter 'enabled -eq $true' -SearchBase = $OU -Properties mailNickname

$Users | Add-Member -MemberType NoteProperty -Name CALEX -Value $null -Force

foreach ($User in $Users)
{
    if ($User.mailNickName -eq $null)
    {
        $User.CALEX = "No"
    }
    else
    {
        $User.CALEX = "Yes"
    }
}    

$Users | Select-Object SamAccountName, CALEX | Export-CSV -Path "C:\Support\$($Date)-Department.csv" -NoTypeInformation -Force

所需的文件可以通过简化的脚本版本生成:

$Date=$((获取日期).ToString('yyyy-MM-dd'))
$OU=“OU=of部门”
$Users=Get ADUser-Filter'enabled-eq$true'-SearchBase$OU-Properties邮件昵称
$Users |选择对象名称,@{Name=“CAL Exchange”;e={if($User.mailNickName){return“Yes”}否则{return“No”}}}}}导出CSV-Path“C:\temp\$($Date)-Department.CSV”-NoTypeInformation
当然最后它不会有
Count:X个用户
,但我故意删除了它-我个人不会把它放在
.csv
文件中。通过使用
添加内容
,您可以轻松添加此内容



注意:手动将内容添加到CSV文件时,请注意数据格式-否则,例如Excel可能无法读取该文件。通常,您必须记住

您希望看到的确切输出是什么?一列
$User.Name
,一列
$User.CALEX
?另外,将代码存储到变量中并使用
&
执行它的目的是什么?是否缺少一些逻辑?写入主机就像“打印”-它将文本发送到powershell窗口。尝试删除它。我不太确定您的代码在这里期望的输出是什么,您能解释一下期望的输出吗?尝试用编写另一种语言的方式编写PS脚本是不合适的。您试图做的事情非常简单,但不是以您的方式;我们正在做。如上所述,唐;t使用写入主机-如果要导出到csv,请将数组元素通过管道传输到该主机。尝试此代码查看它的功能:获取ADUser-Filter'enabled-eq$true'-SearchBase$OU | export csv-Path c:\temp\test.csvAlmost done,但
CALEX
将是
ADPropertyValueCollection
,因此您必须访问其值(例如,使用计算属性)