Solução de problemas de scripts do PowerShell
O script claramente não está gostando da sua entrada em CSV ou da maneira como ela é organizada em seu script.
Por favor, execute a linha Import-CSV
manualmente a partir de uma sessão inicializada do PowerShell:
$Users = Import-Csv "C:\PSScripts\Create\users.csv" -header("lastname","firstame","program","password")
A partir disso, você pode consultar elementos individuais da matriz importada: $users[1].firstname
, $users[2].program
, etc.
Eu também sugeriria testar sua lógica $DetailedName
para garantir que essa entidade seja organizada adequadamente.
Versão do Exchange
Tem certeza de que nada mudou em seu ambiente do Exchange? O parâmetro -Name
de New-Mailbox
foi alterado no comportamento entre o Exchange 2010 e o Exchange 2013. Technet Ex 2010 Technet Ex 2013+
No Exchange 2010:
The Name parameter specifies the user's name. This is the name that appears in Active Directory Users and Computers. This is also the user name that appears in Recipient Properties on the User Information tab.
No Exchange 2013:
The Name parameter specifies the unique name of the mailbox. The
maximum length is 64 characters. If the value contains spaces, enclose
the value in quotation marks (").
Parece que seu ambiente está se comportando no sentido do Exchange 2013, em que -Name
não é tão tolerante quanto a espaços.
Editar
Isso vai ficar confuso, mas aqui vai.
Com write-host
, posso obter a saída necessária para o parâmetro -Name
em New-Mailbox
.
> $displayname = $lastname + ',' + ' ' + $firstname
> Write-Host $displayname
Doe, John
> Write-Host """$displayname"""
"Doe,John"
Resultado: as aspas duplas ( "
x3) servem para encapsular o valor de $ displayname entre aspas duplas.
O que eu não sei sabe é se New-Mailbox
analisará isso corretamente e removerá as citações resultantes do nome ao obter essa entrada.
Algo que não funcionou é '
"
'
(sem espaços) para encapsular a variável $displayname
. Isso resultou em " Doe,John"
com um espaço principal. (???)