如何与get-mailbox中的对象属性进行比较

时间:2016-04-19 12:55:27

标签: powershell variables object compare sip

我正在尝试使用package com.example.vikrant.safeshelter.Login; import java.util.HashMap; import retrofit.Call; import retrofit.http.Body; import retrofit.http.POST; public interface signupapi { @POST("/1/classes/_User") Call<Signupmodel> postData(@Body HashMap hm); } 确认每个用户的userprincipalname和sip地址匹配。我知道有些用户不匹配,但我的脚本对每个邮箱都返回true。知道我做错了什么吗?

get-mailbox

1 个答案:

答案 0 :(得分:0)

切勿在管道中使用Format-* cmdlet,除非它是向用户显示内容的最后一步,或者您要使用Format-* | Out-String | Out-File保存我。 | fl |打破了您的管道,因为它输出了特殊的格式对象,而不是原始数据。所以从:

开始
$users = Get-Mailbox -ResultSize Unlimited -OrganizationalUnit $_ |
Select-Object DisplayName, 
    Samaccountname, 
    Userprincipalname, 
    @{n='EmailAddresses';e={$_.EmailAddresses | ?{$_ -match '^sip'}|%{$_ -replace 'sip:',''}}}

$users

它输出了什么吗?列表中的值是否正确?我没有Exchange可用于测试,但我认为EmailAddresses返回了您将使用的对象:

@{n='EmailAddresses';e={$_.EmailAddresses | ? {$_.PrefixString -eq 'sip' }| % { $_.AddressString }}}`

在您确认它看起来没问题后,您可以添加自动测试,例如:

$Users | Foreach-Object {
    If($_.emailaddresses -eq "$($_.Userprincipalname)") {
        'True'
    } else {
        'False'
    }
}

$Users | Select Name, DisplayName, Samaccountname, Userprincipalname, EmailAddress, @{n="UPNandEmailMatch";e={$_.Userprincipalname -eq $_.EmailAddress }}