I was asked recently to come up with the best way to figure out which users were forwarding their land-line to another number (e.g. mobile)
or to another user.
I came up with the idea of using SEFAUtil to figure out all the currently enabled users' setting.
Your feedback is always welcome.
I came up with the idea of using SEFAUtil to figure out all the currently enabled users' setting.
# Initialize Variables
$AllUsers = @()
$Count = 0
# Define Location of SEFAUtil
$SEFAUtil = "C:\Program Files\Microsoft Lync Server 2013\ResKit\SEFAUtil.exe"
# Get Application Pool Server to use
$LyncServer = Get-CsTrustedApplication | ?{$_.ApplicationId -eq "urn:application:sefautil"}|%{$_.TrustedApplicationPoolFqdn}
# Get Lync EV Enabled Users
$LyncUsers = Get-CsUser | where {$_.EnterpriseVoiceEnabled -eq $true}
$TotalUsers = $LyncUsers.Count
# Loop for each one and get details
Foreach ($LyncUser in $LyncUsers){
$Destination = $Null
#Convert User SIP to lowercase
$UserSIP = $LyncUser.SipAddress.ToLower().Replace("sip:","")
#Write Progress
$Count += 1
Write-Progress -Activity "Processing Users" -status "User $UserSIP" `
-percentComplete ($Count / $TotalUsers*100)
#Do the magic
&$SEFAUtil /Server:$LyncServer $UserSIP| Tee-Object -Variable output|Out-Null
#Split the output to lines & convert to an object
$parts = $output -split "`n"
#Figure Out Destination
$Destination = ($parts[4] -split "to: ")[1]
If ($Destination -eq "") {
} ElseIf ($Destination -Match "user=phone") {
# Destination is a number
$Destination = $Destination.Split("@")[0].Split(":")[1]
} Else {
# Destination is a SIP address
write-output $Destination
#$Destination = $Destination.Split(":")[1]
}
#Display information
$Data = New-Object -Type PSObject -Property @{
SIP = ($parts[0] -split ": ")[1]
Name = ($parts[1] -split ": ")[1]
EVEnabled = ($parts[2] -split ": ")[1]
SimRing = ($parts[3] -split ": ")[1]
ForwardTo = $Destination
}
$AllUsers += $Data
}
Your feedback is always welcome.
No comments:
Post a Comment