为什么 Export-Csv 会提示我输入 InputObject

为什么 Export-Csv 会提示我输入 InputObject

首先,这是我目前编写的脚本:

Get-Mailbox | Select-Object Name, Alias, ServerName
Get-ADUser -Filter {Enabled -eq $false} | FT samAccountName, Surname,     Enabled

Export-Csv c:\UA.csv -Delimiter " " -NoTypeInformation 

输出基本上显示 2 行结果(上面的名称、别名和服务器名称列表以及下面的 samAccountName、姓氏和已启用列表)。但是,在输出下方,它要求我输入一个 InputObject,因此显然 Export-Csv 不起作用。

cmdlet Export-Csv at command pipeline position 1
Supply values for the following parameters:
InputObject: 

我做错了什么吗?我是 PowerShell 和脚本方面的新手。提前致谢。

编辑(澄清):我想要的输出是 Excel 中的一个清晰的表格,其中包含所有属性(名称、别名、已启用等)的列表和单独的列。到目前为止,在下面的帮助下,我已经设法使一半工作正常。

答案1

$result = @()
$mailboxes = Get-mailbox
$exportto = "H:\Export.csv"
 foreach($mailbox in $mailboxes)
 {
    $user = Get-ADUser $mailbox.SAMAccountName -Properties Displayname
    if(!$user.Enabled)
    {
        $result += $Mailbox.DisplayName + "," + $mailbox.Alias + "," + $mailbox.ServerName + "," + $user.Samaccountname + "," + $user.Surname + "," + $user.Enabled | Out-file $exportto -Append
    }
 }

我认为这会达到您的要求。首先,它会获取所有邮箱,然后对找到的每个邮箱运行 get-aduser,并且只对已禁用的用户将其放入组合列表中。

编辑----:(更有效的方式)

$exportto = "H:\Export.csv"

foreach($user in Get-ADUser -Filter {Enabled -eq $false})
{
    $mailbox = Get-Mailbox $user.SamAccountName
    $Mailbox.DisplayName + "," + $mailbox.Alias + "," + $mailbox.ServerName + "," + $user.Samaccountname + "," + $user.Surname + "," + $user.Enabled | Out-file $exportto -Append
}

答案2

我不能 100% 确定您要做什么,但是基本上命令 Export-CSV 没有任何内容可以为您导出。它的工作方式如下:

Get-Mailbox | Select-Object Name,Alias,Servername | Export-csv Filepath\filename.csv -NoTypeInformation
Get-AdUser -Filter {Enabled -eq $false} | Select-Object samAccountName,Surname| Export-csv Filepath\filename.csv -NoTypeInformation

或者

$mailboxes = Get-Mailbox | Select-Object Name,Alias,Servername 
$Users = Get-AdUser -Filter {Enabled -eq $false} | Select-Object samAccountName,Surname

$mailboxes | Export-csv Filepath\filename.csv  -NoTypeInformation
$users | Export-csv Filepath\filename.csv -NoTypeInformation

这样,您基本上将命令的结果传递给 Export csv 命令。仅供参考,您可以使用“epcsv”代替 Export-CSV,这是一个简短的命令。仅供参考2 使用这种方式时,您不能使用 ft(Format-Table),这样做会导致导出时出现乱码,使用 fl(Format-List)时也是如此。因此我将其更改为 Select-Object

如果这不是您想要的,请更清楚地说明您的问题:)

答案3

答案很简单,正如 Kage 所建议的那样。您在导出之前缺少分隔符,因此导出被视为独立命令,但没有任何内容可导出。请尝试这样做:

    Get-Mailbox | Select-Object Name, Alias, ServerName
Get-ADUser -Filter {Enabled -eq $false} | FT samAccountName, Surname,     Enabled | Export-Csv c:\UA.csv -Delimiter " " -NoTypeInformation 

答案4

您可以尝试以下操作:

Get-Mailbox | Select-Object Name, Alias, ServerName
Get-ADUser -Filter {Enabled -eq $false} | FT samAccountName, Surname,     Enabled **|**

Export-Csv c:\UA.csv -Delimiter " " -NoTypeInformation

相关内容