-
Notifications
You must be signed in to change notification settings - Fork 0
Get LyncUserRegistrationReport
Generates a detailed report of Lync user registrations and activity status. This reporting tool provides insights into user registration details, including last activity dates, registration status, pool distribution, and user activity patterns to help administrators monitor user connectivity and system usage.
- User Registration Analysis: Current registration status and details
- Activity Tracking: Last activity dates and patterns
- Pool Distribution: User distribution across registrar pools
- Voice Enablement Statistics: Enterprise Voice and voice policy analysis
- SBA User Identification: Branch office user tracking
- Recent Modification Tracking: Recently changed user accounts
- Sample User Listings: Detailed examples for verification
- Registration Health Indicators: Active vs. inactive user identification
- PowerShell Version: 3.0 or higher
- Required Environment: Lync/Skype for Business Management Shell
-
Required Permissions:
- CsUserAdministrator or CsAdministrator role
- Read access to Lync user configuration
- Network Requirements: Access to Lync Front End servers and registrar pools
-
OrganizationName: Organization name
- Type: String
- Default:
"Organization" - Description: Organization name for report headers
-
ReportPath: Output file path
- Type: String
- Default:
"C:\Reports\Lync_Users_Registration_{timestamp}.txt" - Description: Full path where registration report will be saved
-
SampleUserCount: Sample size for detailed listing
- Type: Integer
- Default:
10 - Description: Number of sample users to include in detailed analysis
-
RecentModifiedDays: Recent modification timeframe
- Type: Integer
- Default:
30 - Description: Number of days to look back for recently modified users
-
SBAPattern: SBA pool identification pattern
- Type: String
- Default:
"*MSSBA*" - Description: Wildcard pattern to identify Survivable Branch Appliance pools
.\Get-LyncUserRegistrationReport.ps1 -OrganizationName "Contoso"Generates user registration report with default settings.
.\Get-LyncUserRegistrationReport.ps1 -OrganizationName "Contoso" -ReportPath "C:\Reports\Contoso_Lync_Report.txt"Creates report with custom organization name and output location.
.\Get-LyncUserRegistrationReport.ps1 -SampleUserCount 25 -RecentModifiedDays 60Includes 25 sample users and 60-day recent modification window.
.\Get-LyncUserRegistrationReport.ps1 -OrganizationName "Global Corp" -SBAPattern "*Branch*" -SampleUserCount 5Focuses on branch office users with custom SBA pattern.
.\Get-LyncUserRegistrationReport.ps1 -SampleUserCount 3 -RecentModifiedDays 7Quick assessment with minimal sample size and recent changes only.
- Total Lync-Enabled Users: Count of all Lync-enabled accounts
-
Users by Registrar Pool: Distribution across pools
- Pool FQDN
- User count per pool
- Percentage of total users
- Enabled Users: Active user accounts
- Disabled Users: Disabled but Lync-enabled accounts
- Currently Registered Users: Users with active registrations
- Unregistered Users: Users not currently registered
- Registration Rate: Percentage of users currently signed in
- Registration by Pool: Active registrations per pool
Registration status indicators:
- β Registered: User currently signed in
β οΈ Unregistered: User enabled but not signed in- π΄ Disabled: Account disabled (shouldn't be registered)
- Voice-Enabled Users: Users with Enterprise Voice enabled
- Voice Disabled Users: Lync users without voice capabilities
- Voice Enablement Rate: Percentage with Enterprise Voice
- Users with LineURI: Users with phone numbers assigned
- Users without LineURI: Voice users missing phone numbers
- Voice Policy Distribution: Users per voice policy
For users registered to SBA pools:
- Total SBA Users: Count of branch office users
- SBA Pools: List of branch appliance pools
- Users per SBA: Distribution across branches
- Site Identification: Branch locations (extracted from pool names)
Users modified within specified days:
- User Count: Recently changed accounts
- Modification Types: What changed (policies, enablement, etc.)
-
Sample Listings: Detailed examples with:
- Display name
- SIP address
- Last modification date
- Modification type
Detailed information for sample users (up to SampleUserCount):
- Display Name: User's display name
- SIP Address: Primary SIP URI
- UPN: User Principal Name
- Registrar Pool: Assigned pool
- Registration Status: Currently registered (Yes/No)
- Enterprise Voice: Enabled/Disabled
- LineURI: Assigned phone number
- Voice Policy: Applied voice policy
- Last Activity: Most recent sign-in or activity timestamp
- Enabled Status: Account enabled/disabled
- Active Users (Last 7 Days): Users with recent activity
- Active Users (Last 30 Days): Monthly active users
- Inactive Users (>30 Days): Users not signed in for over 30 days
- Never Registered: Users enabled but never signed in
- Activity Rate: Percentage of active users
- Overall Health Score: Based on registration rate, activity, and configuration
- Healthy: >90% users able to register
- Warning: 70-90% registration success
- Critical: <70% registration success
- Issues Identified: Common problems found
- Recommendations: Suggested actions
Default: C:\Reports\
Pattern: Lync_Users_Registration_{YYYYMMDD_HHmmss}.txt
Example: Lync_Users_Registration_20251223_143052.txt
Progress indicators during generation:
- User enumeration progress
- Registration status checks
- Activity analysis progress
- Report completion confirmation
Solution: Run from Lync Management Shell:
# Launch Lync Management Shell
# Start Menu β Lync Server Management Shell
# Or import module
Import-Module "C:\Program Files\Common Files\Skype for Business Server 2015\Modules\SkypeForBusiness\SkypeForBusiness.psd1"Possible Causes:
- Users not currently signed in
- Registration cmdlets require additional permissions
- User presence information not available
Solution: Verify cmdlet availability:
# Test user registration cmdlet
Get-CsUserRegistrarStatus -UserUri "user@contoso.com"
# If unavailable, report shows enablement onlySolution: Last activity data may not be available for all users. This is expected when:
- User never signed in
- Activity tracking not enabled
- User information not synchronized
Solution: Adjust SBAPattern to match your naming convention:
# First identify SBA pool names
Get-CsPool | Where-Object {$_.Services -like "*Registrar*"} | Select-Object Identity
# Then adjust pattern
.\Get-LyncUserRegistrationReport.ps1 -SBAPattern "*yoursbaname*"Solution: For large environments (>10,000 users):
- Reduce sample user count:
-SampleUserCount 5 - Run during off-peak hours
- Consider filtering by pool:
# Manually filter before running $users = Get-CsUser -Filter {RegistrarPool -eq "pool.contoso.com"}
Solution: Ensure appropriate permissions:
# Verify your role
Get-CsAdministratorRole | Where-Object {$_.Identity -match $env:USERNAME}
# Request access from admin
# Admin runs: Grant-CsUserAdministrator -Identity "DOMAIN\Username"Interpretation:
- β Good: No changes means stable environment
- May indicate: RecentModifiedDays too short
Solution: Extend timeframe:
.\Get-LyncUserRegistrationReport.ps1 -RecentModifiedDays 90Monitor user registration health daily:
# Schedule daily registration report
$Action = New-ScheduledTaskAction -Execute "PowerShell.exe" -Argument "-File `"C:\Scripts\Get-LyncUserRegistrationReport.ps1`""
$Trigger = New-ScheduledTaskTrigger -Daily -At 9:00AM
Register-ScheduledTask -TaskName "Lync Daily Registration Check" -Action $Action -Trigger $TriggerVerify new user enablement:
# Generate report focusing on recent changes
.\Get-LyncUserRegistrationReport.ps1 -RecentModifiedDays 7 -SampleUserCount 20
# Review "Recently Modified Users" section
# Verify new users can registerPre-Teams migration analysis:
- Identify total user count
- Document pool distribution
- Identify SBA users needing special migration handling
- Capture voice-enabled user count
- Document inactive users (candidates for removal)
Analyze registration patterns for capacity:
- Review users per pool
- Identify registration rates
- Plan pool expansion based on distribution
- Monitor activity trends over time
Identify users for cleanup:
# Generate report
.\Get-LyncUserRegistrationReport.ps1 -RecentModifiedDays 90
# Review "User Activity Analysis" section
# Identify "Never Registered" and ">30 Days Inactive"
# Plan deprovisioning for inactive accountsEvaluate branch office connectivity:
# Focus on SBA users
.\Get-LyncUserRegistrationReport.ps1 -SBAPattern "*" -SampleUserCount 50
# Review SBA Users section
# Verify registration success at branches
# Identify connectivity issuesUser reports can't sign in:
- Generate registration report
- Find user in sample or by manual query
- Check registration status
- Verify pool assignment
- Check enablement status
- Review voice policy if voice issue
Verify voice configuration:
- Review "Enterprise Voice Statistics"
- Identify users with LineURI vs. without
- Validate voice policy assignments
- Plan phone number assignments
Regular compliance checks:
# Monthly compliance report
.\Get-LyncUserRegistrationReport.ps1 -RecentModifiedDays 30 -SampleUserCount 50
# Document:
# - Total enabled users
# - Voice-enabled users
# - SBA users (branch locations)
# - Activity rates- β Registration rate >70% during business hours
- β Active user rate >80% over 30 days
- β All voice users have LineURI assigned
- β Balanced pool distribution
- β Minimal "never registered" users
β οΈ Registration rate 50-70%β οΈ Active user rate 60-80%β οΈ Voice users missing LineURI assignmentsβ οΈ Unbalanced pool distribution (>80% on one pool)β οΈ Growing "never registered" count
- π΄ Registration rate <50%
- π΄ Active user rate <60%
- π΄ Majority voice users missing LineURI
- π΄ Pool unavailable (0 registrations)
- π΄ High disabled user count
# From report data
$totalUsers = 1000 # From "Total Lync-enabled users"
$registeredUsers = 750 # From "Currently Registered Users"
$registrationRate = ($registeredUsers / $totalUsers) * 100
# Result: 75% registration rate- Healthy: Users distributed evenly across pools
- Warning: One pool has >60% of users
- Critical: One pool has >80% of users (consider load balancing)
# From report data
$voiceEnabled = 500 # From "Voice-Enabled Users"
$withLineURI = 450 # From "Users with LineURI"
$completeness = ($withLineURI / $voiceEnabled) * 100
# Result: 90% completeness (50 users need phone numbers)- Start-LyncCsvExporter.ps1 - Export user data to CSV for analysis
- Get-ComprehensiveLyncReport.ps1 - Complete environment assessment
- Export-ADLyncTeamsMigrationData.ps1 - AD attribute export for migration
-
v2.0 (2025-09-17): Enhanced registration reporting
- Added user activity analysis
- Enhanced registration status tracking
- Added voice enablement statistics
- Improved SBA user identification
- Added registration health summary
-
v1.0 (2024): Initial release
- Basic user registration reporting
- Pool distribution analysis
- Overview
- Start-LyncCsvExporter
- Get-ComprehensiveLyncReport
- Get-LyncHealthReport
- Get-LyncInfrastructureReport
- Get-LyncServiceStatus
- Get-LyncUserRegistrationReport
- Export-ADLyncTeamsMigrationData
- New-Office365Accounts
- Sync-ContactsFromCsv
- Set-EmailToSharedAccount
- Set-SMTPForward
- Invoke-UserSignOutAndBlock
- Security Assessment Scripts (coming soon)
- Azure Automation (documentation pending)
- Get-GraphToken
- Get-GraphHeaders
- Get-AzureResourcePaging
- Get-EnterpriseAppUsage
- Get-ExchangeErrorsGraph
- Get-PBIWorkspaceUsageReport
- Intune Management (documentation pending)