Powershell Scripts funciona por 10 meses, de repente pára de funcionar

2

Quando eu crio meus novos usuários toda semana, eu executo os scripts do PowerShell que eu coloquei juntos. Tem funcionado como um encanto por 10 meses, mas desde a semana passada começou a lançar esse erro estranho:

Invoke-Command : Cannot bind parameter 'Name' to the target. Exception setting "Name": "The property value is invalid.
The value can't contain leading or trailing whitespace."
At C:\Users\sarah.sanderson\AppData\Local\Temp\tmp_e30b6ca9-683a-430b-a22e-af2ff6d9ddc1_oam3omxv.1wu\tmp_e30b6ca9-683
a-430b-a22e-af2ff6d9ddc1_oam3omxv.1wu.psm1:27952 char:29
+             $scriptCmd = { & <<<<  $script:InvokeCommand '

 + CategoryInfo          : WriteError: (:) [New-Mailbox], ParameterBindingException
    + FullyQualifiedErrorId : ParameterBindingFailed,Microsoft.Exchange.Management.RecipientTasks.NewMailbox
> 

Meu script é o seguinte:

$cred = Get-Credential Contoso\
$session = New-PSSession -ConfigurationName Microsoft.Exchange -  ConnectionUri http://Contoso-mbx/powershell -Credential $cred
Import-PSSession $session
Import-Module activedirectory


$Users = Import-Csv "C:\PSScripts\Create\users.csv" -header("lastname","firstame","program","password")
foreach ($User in $Users) 
{  
$OU = "OU=Users,DC=Contoso,DC=local"  
$Password = $User.password
$Detailedname = $User.Lastname + "," + " " + $User.firstname 
$UserFirstname = $User.Firstname 
$UserLastname = $User.LastName 
$SAM =  $UserFirstname + "." + $UserLastname 
New-Mailbox -UserPrincipalName [email protected] -OrganizationalUnit $OU -Database "Mailbox Database 2" -Name $Detailedname -Password (ConvertTo-SecureString "Welcome1$" -AsPlainText -Force) -FirstName $UserFirstName -LastName $UserLastName -DisplayName $DetailedName -ResetPasswordOnNextLogon $true

}

De acordo com o erro, ele tem algo a ver com nosso servidor Exchange, que é o Server 2008 R2 executando o Exchange 2010, mas não houve alterações nos últimos 6 meses. Eu não consigo descobrir onde eu deveria estar olhando para desvendar esse erro. Qualquer ajuda seria muito apreciada.

Snippet das linhas 27950-58:

$clientSideParameters = Get-PSImplicitRemotingClientSideParameters $PSBoundParameters $True $scriptCmd = { & $script:InvokeCommand @clientSideParameters -HideComputerName -Session (Get-PSImplicitRemotingSession -CommandName 'New-Mailbox') -Arg ('New-Mailbox', $PSBoundParameters, $positionalArguments) -Script { param($name, $boundParams, $unboundParams) & $name @boundParams @unboundParams }'

    
por Sarah Sanderson 11.11.2015 / 15:53

2 respostas

0

Atualização de status - Ao verificar alterações recentes nos servidores, eu estava me concentrando no servidor de troca porque é onde o problema parecia estar se originando. No entanto, quando eu olhei para as atualizações do Windows no controlador de domínio primário, ele tinha feito um grande número de atualizações de segurança em 11/1, que foi na época em que o script quebrou. Para testar minha teoria de que foi uma das atualizações que causou o problema, fui a um de nossos outros DCs que não tinham as atualizações recentes, e o script foi executado perfeitamente bem. Eu vou fazer algumas reviravoltas sobre as atualizações no DC primário para tentar apontar que atualização está causando os problemas, e vou postar quando eu descobrir qual delas é.

    
por 16.11.2015 / 16:24
0

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. (???)

    
por 12.11.2015 / 17:53