I adapted a script I found online to run within a scheduled task to assign a Conferencing Policy based on the membership of a global group named “CSLyncRecordingUsers.” Originally the script accepted paramters, but I wanted to just force the scheduled task to run with as few paramters as possible. I commented out the lines requiring arguments.
The service account needs to have the Logon as Service right assigned, and it needs to be a member of RTCUniversalServerAdmins.
The scheduled task just needs to reference powershell.exe and then a single parameter with the location of the script.
_________BEGIN Assign-ToGroup.ps1____________________
import-module ‘C:\Program Files\Common Files\Microsoft Lync Server 2013\Modules\Lync\Lync.psd1’
#Note: The above quotes must be single ticks and not double quotes or the task scheduler will not fire.
#Purpose: Assign the Recording Policy to all members of the global Group CSLyncRecordingUsers
#Syntax C:\Scripts\Assign-ToGroup.ps1 CSLyncRecordingUsers”RecordingAllowed”
#$strFilter = “(&(objectCategory=Group)(SamAccountName=” + $args[0] +”))”
$strFilter = “(&(objectCategory=Group)(SamAccountName=CSLyncRecordingUsers))”
$objDomain = New-Object System.DirectoryServices.DirectoryEntry
$objSearcher = New-Object System.DirectoryServices.DirectorySearcher
$objSearcher.SearchRoot = $objDomain
$objSearcher.Filter = $strFilter
$objSearcher.SearchScope = “Subtree”
$colProplist = “member”
foreach ($i in $colPropList)
{[void] $objSearcher.PropertiesToLoad.Add($i)}
$colResults = $objSearcher.FindAll()
foreach ($objResult in $colResults)
{$objItem = $objResult.Properties; $group = $objItem.member}
foreach ($x in $group)
{
# Grant-CsConferencingPolicy $x -PolicyName $args[1]
Grant-CsConferencingPolicy $x -PolicyName “RecordingAllowed”
}