Прежде всего, вот сценарий, который я написал до сих пор:

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 строки результатов (список имен Name, Alias и ServerName выше и список samAccountName, Surname и Enabled ниже). Тем не менее, ниже вывода он запрашивает у меня InputObject, поэтому ясно, что Export-Csv не работал.

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

Я делаю что-то неправильно? Я новичок в PowerShell и сценариях в целом. Заранее спасибо.

РЕДАКТИРОВАТЬ (Уточнение): Выходной информацией, к которой я стремлюсь, является одна чистая таблица в Excel со всеми свойствами (Имя, Псевдоним, Включено и т.д.) В списке с отдельными столбцами. До сих пор с помощью приведенной ниже мне удалось получить половину его работы.

2 ответа2

1

Я не уверен на 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, это короткая команда для него. FYI2 При использовании этого способа вы не можете использовать ft (Format-Table), когда вы делаете, что вы получаете бред в своем экспорте, то же самое при использовании fl (Format-List). таким образом я изменил его на Select-Object

Если это не совсем то, что вы искали, уточните свой вопрос :)

0
$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
}

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .