首先,这是我目前编写的脚本:
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