ค้นหาเว็บไซต์

เปิดใช้งานและปิดใช้งานผู้ใช้ Lync/Skype for Business โดยอัตโนมัติ


เมื่อฉันเห็นผู้ดูแลระบบเปิดใช้งานผู้ใช้ Lync/Skype for Business ทั้งหมดด้วยตนเอง มันทำให้ฉันประจบประแจง ด้วย PowerShell เพียงไม่กี่บรรทัดและงานที่กำหนดเวลาไว้ คุณสามารถให้ผู้ใช้เปิดใช้งาน Lync/Skype for Business ได้โดยอัตโนมัติ เพียงคัดลอกตัวอย่างสคริปต์และแก้ไขด้วยรายละเอียดโครงสร้างพื้นฐานของคุณ และกำหนดเวลางานบนเซิร์ฟเวอร์ Lync/Skype For Business หรือเซิร์ฟเวอร์ที่ไม่ใช่ Lync/Skype for Business ผ่านทางระยะไกล

สิ่งแรกที่ต้องพิจารณาคือใครควรเปิดใช้งาน Lync/Skype for Business และการตั้งค่าที่จำเป็นที่จะมอบให้กับผู้ใช้เหล่านั้น ฉันจะยกตัวอย่างสถานการณ์ต่างๆ ทั้งการเปิดใช้งานหรือปิดใช้งานผู้ใช้ (ตัวอย่างทั้งหมดค้นหาเฉพาะผู้ใช้ Lync/Skype for Business ที่ไม่ได้เปิดใช้งานในปัจจุบัน และถือว่าที่อยู่อีเมลจะเป็นที่อยู่ SIP ที่เปิดใช้งาน)

ตัวอย่าง #1: เปิดใช้งานผู้ใช้ทั้งหมดในบริษัทที่มีบัญชีอีเมลที่ตรงกับ @yourdomain.com สำหรับการใช้งาน Lync ปกติ

Get-CsAdUser -Filter { Enabled -ne $True -and WindowsEmailAddress -like '*@yourdomain.com' } |
Enable-CsUser -RegistrarPool 'yourpool' -SipAddressType emailaddress

ตัวอย่าง #2: เปิดใช้งานผู้ใช้ทั้งหมดในบริษัทภายใน Active Directory OU เฉพาะและบัญชีอีเมลที่ตรงกับ @yourdomain.com สำหรับการใช้งาน Lync ปกติ

Get-CsAdUser -OU 'your.domain.com/OU' -Filter { Enabled -ne $True -and WindowsEmailAddress -like '*@yourdomain.com' } |
Enable-CsUser -RegistrarPool 'yourpool' -SipAddressType emailaddress

ตัวอย่าง #3: เปิดใช้งานผู้ใช้ทั้งหมดในบริษัทที่มีแอตทริบิวต์เมืองเฉพาะสำหรับการใช้ Lync ปกติกับกลุ่มผู้รับจดทะเบียนที่เหมาะสม

Get-CsAdUser -Filter { Enabled -ne $True -and WindowsEmailAddress -like '*@yourdomain.com' -and City -eq 'YourCityName' } |
Enable-CsUser -RegistrarPool 'yourlocationdependantpool' -SipAddressType emailaddress

ตัวอย่าง #4: เปิดใช้งานผู้ใช้ทั้งหมดในบริษัทที่มีแอตทริบิวต์เมืองเฉพาะสำหรับการใช้ Lync ปกติกับกลุ่มผู้รับจดทะเบียนที่เหมาะสมและนโยบายตำแหน่งที่ตั้งเฉพาะ

$users = Get-CsAdUser -Filter { Enabled -ne $True -and WindowsEmailAddress -like '*@yourdomain.com' -and City -eq 'YourCityName' }
ForEach ($user in $users)
{
	Enable-CsUser $user.Identity -RegistrarPool 'yourlocationdependantpool' -SipAddressType emailaddress
	Grant-CsLocationPolicy -Identity $user.Identity -PolicyName 'yourlocationpolicy' -Confirm:$False
}

ตัวอย่าง #5: เปิดใช้งานผู้ใช้ทั้งหมดในบริษัทด้วยแอตทริบิวต์เมืองเฉพาะสำหรับ Enterprise Voice ด้วยนโยบายเสียงเฉพาะ แผนการโทร นโยบายการประชุม นโยบายสถานที่ (อย่าลืม Line URI ที่ไม่ซ้ำกันเมื่อคุณเรียกใช้คำสั่ง Set-CsUser หากจำเป็น)

$users = Get-CsAdUser -Filter { Enabled -ne $True -and WindowsEmailAddress -like '*@yourdomain.com' }
ForEach ($user in $users)
{
	Enable-CsUser -Identity $user.Identity -RegistrarPool 'yourlocationdependantpool' -SipAddressType emailaddress
	Set-CsUser -Identity $user.Identity -EnterpriseVoiceEnabled $True -Confirm:$False
	Grant-CsConferencingPolicy -Identity $user.Identity 'yourconferencingpolicy' -Confirm:$False
	Grant-CsDialPlan -Identity $user.Identity -PolicyName 'yourdialplan' -Confirm:$False
	Grant-CsLocationPolicy -Identity $user.Identity -PolicyName 'yourlocationpolicy' -Confirm:$False
	Grant-CsVoicePolicy -Identity $user.Identity -PolicyName 'yourvoicepolicy' -Confirm:$False
}

ตัวอย่าง #6: ตัวอย่างต่อไปนี้ไฮไลต์ PowerShell Remoting เพื่อดำเนินการเปิดใช้งานบัญชีผู้ใช้จากคอมพิวเตอร์เครื่องอื่นจากระยะไกล

$serviceuser = 'serviceuser'
$servicepassword = 'servicepassword' | ConvertTo-SecureString -AsPlainText -Force
$servicecredential = New-Object system.Management.Automation.PSCredential($serviceuser, $servicepassword)
$lyncsession = New-PSSession -ConnectionUri 'https://yourpoolname/ocspowershell' -Credential $servicecredential
$emailaddress = '*@yourdomain.com'
Invoke-Command -Session $lyncsession -ScriptBlock {
	param ($emailaddress) Get-CsUser -Filter "WindowsEmailAddress -like '$emailaddress'" |
	Enable-CsUser -RegistrarPool 'yourpool' -SipAddressType emailaddress
} -ArgumentList $emailaddress
Remove-PSSession $lyncsession

ตัวอย่าง #7: ตัวอย่างต่อไปนี้เน้นการวนซ้ำผ่านหลายเมืองและการตั้งค่าพูลและนโยบายที่เหมาะสมตามเมืองนั้น ตัวอย่างนี้ใช้ไฟล์ .CSV ที่มีเมืองทั้งหมดและการตั้งค่าที่เกี่ยวข้อง คุณสามารถทำสิ่งเดียวกันนี้ให้สำเร็จได้ด้วยโค้ดโดยเพิ่มออบเจ็กต์ที่กำหนดเองแล้วเพิ่มแต่ละเมือง แนะนำให้ใช้ไฟล์ .CSV เนื่องจากจะทำให้คุณสามารถเพิ่ม/ลบเมืองต่างๆ ได้ในอนาคตโดยไม่ต้องเปลี่ยนสคริปต์


<#
Contents of an example cities.csv

Name,RegistrarPool,DialPlan,ConferencingPolicy,LocationPolicy,VoicePolicy
London,LondonPool,LondonDialPlan,LondonConferencingPolicy,LondonLocationPolicy,LondonVoicePolicy
Chicago,ChicagoPool,ChicagoDialPlan,ChicagoConferencingPolicy,ChicagoLocationPolicy,ChicagoVoicePolicy
Toronto,TorontoPool,TorontoDialPlan,TorontoConferencingPolicy,TorontoLocationPolicy,TorontoVoicePolicy
Sydney,SydneyPool,SydneyDialPlan,SydneyConferencingPolicy,SydneyLocationPolicy,SydneyVoicePolicy
#>

$cities = Import-Csv cities.csv

ForEach ($city in $cities) {
	$users = Get-CsAdUser -Filter { Enabled -ne $True -and WindowsEmailAddress -like ‘*@yourdomain.com’ -and City -eq $city.Name }
	ForEach ($user in $users)
	{
		Enable-CsUser -Identity $user.Identity -RegistrarPool $city.RegistrarPool -SipAddressType emailaddress
		Set-CsUser -Identity $user.Identity -EnterpriseVoiceEnabled $True -Confirm:$False
		Grant-CsConferencingPolicy -Identity $user.Identity $city.ConferencingPolicy -Confirm:$False
		Grant-CsDialPlan -Identity $user.Identity -PolicyName $city.DialPlan -Confirm:$False
		Grant-CsLocationPolicy -Identity $user.Identity -PolicyName $city.LocationPolicy -Confirm:$False
		Grant-CsVoicePolicy -Identity $user.Identity -PolicyName $city.VoicePolicy -Confirm:$False
	}
}

ต่อไปนี้เป็นตัวอย่างของการปิดใช้งานผู้ใช้โดยอัตโนมัติจาก Lync หากบัญชี Active Directory ของพวกเขาถูกปิดใช้งาน

ตัวอย่าง #1: การปิดใช้งาน Lync/Skype for Business จากผู้ใช้ทั้งหมดใน Active Directory ที่ถูกปิดใช้งาน

Get-CsAdUser -LDAPFilter "(&(userAccountControl:1.2.840.113556.1.4.803:=2)(msRTCSIP-UserEnabled=TRUE))" |
Disable-CsUser

ตัวอย่าง #2: การปิดใช้งาน Lync/Skype for Business จากระยะไกลจากผู้ใช้ทั้งหมดใน Active Directory ที่ถูกปิดใช้งาน

$serviceuser = 'serviceuser'
$servicepassword = 'servicepassword' | ConvertTo-SecureString -AsPlainText -Force
$servicecredential = New-Object system.Management.Automation.PSCredential($serviceuser, $servicepassword)
$lyncsession = New-PSSession -ConnectionUri 'https://yourpoolname/ocspowershell' -Credential $servicecredential
Invoke-Command -Session $lyncsession -ScriptBlock {
	Get-CsAdUser -LDAPFilter "(&(userAccountControl:1.2.840.113556.1.4.803:=2)(msRTCSIP-UserEnabled=TRUE))" |
	Disable-CsUser
}
Remove-PSSession $lyncsession

ตัวอย่าง #3: ตามที่ร้องขอ นี่คือวิธีแก้ปัญหาในการปิดใช้งาน Lync/Skype for Business จากผู้ใช้ทั้งหมดในกลุ่ม Active Directory จากระยะไกล สิ่งสำคัญในที่นี้คือการปรับตัวกรอง LDAP ให้รวมเฉพาะสมาชิกของกลุ่มใดกลุ่มหนึ่งเท่านั้น

$serviceuser = 'serviceuser'
$servicepassword = 'servicepassword' | ConvertTo-SecureString -AsPlainText -Force
$servicecredential = New-Object system.Management.Automation.PSCredential($serviceuser, $servicepassword)
$lyncsession = New-PSSession -ConnectionUri 'https://yourpoolname/ocspowershell' -Credential $servicecredential
Invoke-Command -Session $lyncsession -ScriptBlock {
	Get-CsAdUser -LDAPFilter "(&(memberof=CN=YourGroup,OU=Users,DC=YourDomain,DC=com)(msRTCSIP-UserEnabled=TRUE))" |
	Disable-CsUser
}
Remove-PSSession $lyncsession

อย่าลังเลที่จะแสดงความคิดเห็นพร้อมกับสถานการณ์ที่คุณต้องการและฉันจะอัปเดตโพสต์นี้พร้อมวิธีแก้ไข

บทความที่เกี่ยวข้อง