Get-Help about_if Get-Help about_comparison_operators You can rewrite that statement without a complex condition, but it’s going to take 4 or 5 times as many lines.
From: [email protected] [mailto:[email protected]] On Behalf Of Todd Lemmiksoo Sent: Friday, November 21, 2014 9:17 AM To: [email protected] Subject: Re: [Exchange] Powershell help Thank you again. In the past when I coded compound IF statements, I tried to avoid the IF AND NOT conditions as most offend they did not work. Can you point me to some reading on how PowerShell interprets conditional statements. I need to understand this before being able to code correctly. Todd On Thu, Nov 20, 2014 at 4:28 PM, Michael B. Smith <[email protected]<mailto:[email protected]>> wrote: I’m very careful about such things: foreach( $user in $users ) { If( $user.WindowsEmailAddress –and ( -not ( [String]::IsNullOrEmpty( $user.WindowsEmailAddress.ToString() ) ) ) ) { $UPN = $user.WindowsEmailAddress.ToString() Write-Host "Setting " $UPN $user | Set-User -UserPrincipalName $UPN } } From: [email protected]<mailto:[email protected]> [mailto:[email protected]<mailto:[email protected]>] On Behalf Of Todd Lemmiksoo Sent: Thursday, November 20, 2014 5:19 PM To: [email protected]<mailto:[email protected]> Subject: Re: [Exchange] Powershell help OK, Thank you. Now I find that a couple of accounts do not have an email address. To bypass them do I test for WindowsEmailAddress being not null right before foreach or part of the foreach statement. Like.... If (WindowsEmailAddress not null) { $UPN = } I am used to IF then next else end. Todd Lemmiksoo On Thu, Nov 20, 2014 at 3:35 PM, Michael B. Smith <[email protected]<mailto:[email protected]>> wrote: You are close. $users = Get-User –OrganizationalUnit “OU=Information Technology,OU=BR-General,OU=Employees,OU=Accounts,DC=ghsbtr,DC=net” -ResultSize Unlimited foreach ($user in $users) { $UPN = $user.WindowsEmailAddress.ToString() Write-Host "Setting " $UPN $user | Set-User -UserPrincipalName $UPN } From: [email protected]<mailto:[email protected]> [mailto:[email protected]<mailto:[email protected]>] On Behalf Of Todd Lemmiksoo Sent: Thursday, November 20, 2014 3:57 PM To: [email protected]<mailto:[email protected]> Subject: [Exchange] Powershell help I am using a powershell script to update the UPN in AD for our Office 365 migration. Below is the script. # $users = Get-User -Filter "distinguishedName -like 'CN=*,OU=Information Technology,OU=BR-General,OU=Employees,OU=Accounts,DC=ghsbtr,DC=net'" -ResultSize Unlimited foreach ($user in $users) { $UPN = "$($user.WindowsEmailAddress)" Write-Host "Setting " $UPN $user | Set-User -UserPrincipalName $UPN } It errors out with this error: Setting Invoke-Command : Cannot bind parameter 'UserPrincipalName' to the target. Exception setting "UserPrincipalName": "The p roperty can't be empty." At C:\Users\lemmitt99\AppData\Roaming\Microsoft\Exchange\RemotePowerShell\ghsmsasex1.ghsbtr.net<http://ghsmsasex1.ghsbtr.net>\ghsmsasex1.ghsbtr.net.p sm1:60853 char:29 + $scriptCmd = { & <<<< $script:InvokeCommand ` + CategoryInfo : WriteError: (:) [Set-User], ParameterBindingException + FullyQualifiedErrorId : ParameterBindingFailed,Microsoft.Exchange.Management.RecipientTasks.SetUser Everyone in the IT OU has an email address. -- T. Todd Lemmiksoo -- T. Todd Lemmiksoo -- T. Todd Lemmiksoo
