Por que o Export-Csv me solicita um InputObject?

0

Primeiro de tudo, aqui está o script que escrevi até agora:

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

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

A saída mostra basicamente 2 linhas de resultados (lista Nome, Alias e Nome do Servidor acima e samAccountName, Sobrenome e Ativado abaixo). No entanto, abaixo da saída, ele me pergunta por um InputObject, então claramente o Export-Csv não funcionou.

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

Estou fazendo algo errado? Sou iniciante no PowerShell e no script em geral. Agradecemos antecipadamente.

EDIT (Esclarecimento): A saída que estou procurando é uma tabela clara no Excel com todas as propriedades (Name, Alias, Enabled etc.) em uma lista com colunas separadas. Até agora, com a ajuda abaixo, consegui que metade funcionasse.

    
por eb17 23.08.2016 / 11:01

2 respostas

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

Eu acho que isso faria o que você quer fazer. Primeiro, ele obterá todas as caixas de correio, depois, para cada caixa de correio que encontrar, ele executará um get-aduser e, somente para os usuários com deficiência, ele o colocará na lista combinada.

Editar ----: (a maneira mais eficiente)

$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
}
    
por 23.08.2016 / 16:00
1

Eu não tenho 100% de certeza do que você está tentando fazer, mas no fundo o comando Export-CSV não tem nada para exportar para você. É assim que funciona:

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

Ou

$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

Dessa forma, você passa os resultados dos comandos para o comando Export csv. FYI você pode usar "epcsv" em vez de Export-CSV é um comando curto para isso. FYI2 Ao usar desta forma você não pode usar ft (Format-Table) quando você faz isso, você fica com rabiscos na sua exportação, isto é o mesmo quando se usa fl (Format-List). assim eu mudei para Select-Object

Se isso não foi exatamente o que você estava procurando, por favor, faça sua pergunta mais clara:)

    
por 23.08.2016 / 13:14