Använda PowerShell för att ansluta Skift till UKG Pro Workforce Management
Översikt
Använd Microsoft Teams Shifts-anslutningsappen för UKG Pro Workforce Management för att integrera Shifts-appen i Microsoft Teams med UKG Pro Workforce Management (UKG Pro WFM). Dina medarbetare i frontlinjen kan sömlöst visa och hantera sina scheman i UKG Pro WFM inifrån Skift.
I den här artikeln går vi igenom hur du använder PowerShell för att konfigurera anslutningsappen för att integrera Skift med UKG Pro WFM.
Om du vill konfigurera anslutningen kör du ett PowerShell-skript. Skriptet konfigurerar anslutningsappen, tillämpar synkroniseringsinställningar, skapar anslutningen och mappar UKG Pro WFM-instanser (kallas även WFM-instanser) till team i Teams. Synkroniseringsinställningar avgör vilka funktioner som är aktiverade i Skift och schemainformationen som synkroniseras mellan UKG Pro WFM och Skift. Mappningar definierar synkroniseringsrelationen mellan dina WFM-instanser och team i Teams. Du kan mappa till befintliga team och nya team.
Vi tillhandahåller två skript. Du kan använda båda skripten, beroende på om du vill mappa till befintliga team eller skapa nya team att mappa till.
Du kan konfigurera flera anslutningar, var och en med olika synkroniseringsinställningar. Om din organisation till exempel har flera platser med olika schemakrav skapar du en anslutning med unika synkroniseringsinställningar för varje plats. Tänk på att en WFM-instans bara kan mappas till ett team vid en viss tidpunkt. Om en instans redan är mappad till ett team kan den inte mappas till ett annat team.
Med UKG Pro WFM som arkivhandlingssystem kan dina medarbetare i frontlinjen effektivt hantera sina scheman och tillgänglighet i Skift på sina enheter. Chefer i frontlinjen kan fortsätta att använda UKG Pro WFM för att konfigurera scheman.
Obs!
Du kan också använda anslutningsguiden för Skifts i administrationscentret för Microsoft 365 för att ansluta Skift till UKG Pro WFM.
Innan du börjar
Förutsättningar
Ta dig tid att granska informationen och slutföra alla nödvändiga och konfigurationsuppgifter i Krav och krav för Teams Shifts-anslutningsappen för UKG Pro Workforce Management.
Kontrollera att du slutför alla uppgifter innan du följer stegen i den här artikeln.
Administratörsroll för att hantera anslutningsappen med PowerShell
Du måste vara global microsoft 365-administratör eller administratör för Shifts-anslutningsappen för att slutföra stegen i den här artikeln.
Administratörsrollen för Shifts-anslutningsappen är en anpassad roll som du skapar i Microsoft Entra-ID och tilldelar till en användare. Namnet på rollen måste vara "Administratör för Shifts-anslutningsappen". Rollen behöver inte ha några specifika behörigheter, men minst en behörighet måste anges när du skapar den. Tjänsten förlitar sig på användarens närvaro av rollen och inte dess behörigheter.
Mer information finns i Skapa och tilldela en anpassad roll i Microsoft Entra-ID och Tilldela Microsoft Entra-roller till användare. Tänk på att det kan ta upp till 24 timmar innan rollen skapas och tillämpas på en användare.
Viktigt
Microsoft rekommenderar att du använder roller med minst behörighet. Detta bidrar till att förbättra säkerheten för din organisation. Global administratör är en mycket privilegierad roll som bör begränsas till nödsituationsscenarier när du inte kan använda en mindre privilegierad roll.
Konfigurera din miljö
Installera PowerShell version 7 eller senare. Stegvisa anvisningar finns i Installera PowerShell i Windows.
Kör PowerShell i administratörsläge.
Installera Microsoft Graph PowerShell-modulen.
Install-Module Microsoft.Graph Import-Module Microsoft.Graph
Kontrollera att det är version 1.6.1 eller senare.
Get-InstalledModule Microsoft.Graph
Installera PowerShell-modulen Förhandsversion av Teams.
Install-Module -Name MicrosoftTeams -AllowPrerelease -Force Import-Module MicrosoftTeams
Kontrollera att den är minst version 4.7.0 och innehåller cmdletarna för Shifts-anslutningsappen.
Get-Command -Module MicrosoftTeams -Name *teamsshiftsconnection*
Ange att PowerShell ska avslutas om ett fel uppstår när skriptet körs.
$ErrorActionPreference = "Stop"
Aktivera skript för att köras i Windows.
Set-ExecutionPolicy bypass
Anslut till Teams
Kör följande för att ansluta till Microsoft Teams.
Connect-MicrosoftTeams
När du uppmanas att göra det loggar du in med dina administratörsautentiseringsuppgifter. Du är nu konfigurerad för att köra skripten i den här artikeln och cmdletar för Shifts-anslutningsappen.
Identifiera de team som du vill mappa
Obs!
Slutför det här steget om du mappar WFM-instanser till befintliga team. Om du skapar nya team att mappa till kan du hoppa över det här steget.
I Azure Portal går du till sidan Alla grupper för att få en lista över team-ID:erna i din organisation.
Anteckna TeamIds för de team som du vill mappa. Skriptet uppmanar dig att ange den här informationen.
Obs!
Om ett eller flera team har ett befintligt schema tar skriptet bort scheman från dessa team. Annars visas dubbletter av arbetspass.
Kör skriptet
Kör något av följande skript, beroende på om du skapar ett nytt team eller mappar till ett befintligt team:
- Om du vill konfigurera en anslutning skapar du ett nytt team i Teams och mappar en WFM-instans till det nya teamet genom att köra det nya teams-skriptet.
- Om du vill konfigurera en anslutning och mappa WFM-instanser till befintliga team i Teams kör du det befintliga teams-skriptet.
Följ anvisningarna på skärmen när du kör skriptet. Skriptet slutför följande åtgärder:
Testa och verifiera anslutningen till UKG Pro WFM med hjälp av autentiseringsuppgifterna för UKG Pro WFM-tjänstkontot och de tjänst-URL:er som du anger.
Tillämpa synkroniseringsinställningar. De här inställningarna omfattar synkroniseringsfrekvensen (i minuter) och schemadata som synkroniseras mellan UKG Pro WFM och Skift. Du kan aktivera schemadata som definieras av följande scenarier:
Shift
,SwapRequest
,OfferShiftRequest
,UserShiftPreferences
,OpenShift
,OpenShiftRequest
,TimeOff
,TimeOffRequest
.Mer information finns i New-CsTeamsShiftsConnectionInstance. Kör Get-CsTeamsShiftsConnectionConnector för att se listan över synkroniseringsalternativ som stöds för varje parameter.
Obs!
Skriptet aktiverar synkronisering för varje synkroniseringsalternativ som stöds. Om du vill ändra synkroniseringsinställningarna kan du göra det när anslutningen har konfigurerats. Mer information finns i Använda PowerShell för att hantera din Shifts-anslutning till UKG Pro Workforce Management.
Mappa WFM-instanser till dina team i Teams.
- Om du väljer att köra det nya teams-skriptet för att skapa nya team baseras mappningarna på de nya team som du skapar.
- Om du väljer att köra det befintliga teams-skriptet för att mappa befintliga team baseras mappningarna på de WFM-instans-ID:er och TeamId:er som du anger. Om ett team har ett befintligt schema tar skriptet bort alla schemadata.
När du har kört skriptet bekräftar ett meddelande om att anslutningen har konfigurerats.
Hantera anslutningen
När en anslutning har konfigurerats kan du hantera och göra ändringar i den i administrationscentret för Microsoft 365 eller med hjälp av PowerShell.
Använda administrationscentret för Microsoft 365
På sidan Hantering av anslutningsapp visas varje anslutning som du har konfigurerat, tillsammans med information som hälsostatus och information om synkroniseringsintervall. Du kan också komma åt guiden för att göra ändringar i någon av dina anslutningar. Du kan till exempel uppdatera synkroniseringsinställningar och teammappningar.
Mer information finns i Använda administrationscentret för Microsoft 365 för att hantera din Shifts-anslutning till UKG Pro Workforce Management.
Använda PowerShell
Du kan använda PowerShell för att visa en felrapport, ändra anslutningsinställningar, inaktivera synkronisering med mera. Stegvis vägledning finns i Använda PowerShell för att hantera din Shifts-anslutning till UKG Pro Workforce Management.
Skript
Konfigurera en anslutning och skapa ett nytt team
#Map WFM instances to teams script
Write-Output "Map WFM sites to teams"
Start-Sleep 1
#Ensure Teams module is at least version x
Write-Output "Checking Teams module version"
try {
Get-InstalledModule -Name "MicrosoftTeams" -MinimumVersion 5.2.0
} catch {
throw
}
#Connect to MS Graph
Connect-MgGraph -Scopes "User.Read.All","Group.ReadWrite.All"
#List connector types available
Write-Output "Listing connector types available"
$UkgId = "95BF2848-2DDA-4425-B0EE-D62AEED4C0A0"
$connectors = Get-CsTeamsShiftsConnectionConnector
Write-Output $connectors
$Ukg = $connectors | Where-Object {$_.Id -match $UkgId}
if ($NULL -eq $Ukg) {
throw "UKG Dimensions not currently supported"
}
#Prompt for entering of WFM username and password
$WfmUserName = Read-Host -Prompt 'Input your UKG account username'
$WfmPwd = Read-Host -Prompt 'Input your UKG account password' -AsSecureString
$plainPwd =[Runtime.InteropServices.Marshal]::PtrToStringAuto([Runtime.InteropServices.Marshal]::SecureStringToBSTR($WfmPwd))
#Test connection settings
Write-Output "Testing connection settings"
$ConnectionName = Read-Host -Prompt 'Input connection name'
$apiUrl = Read-Host -Prompt 'Input connector api url'
$ssoUrl = Read-Host -Prompt 'Input connector sso url'
$clientId = Read-Host -Prompt 'Input connector client id'
$AppKey = Read-Host -Prompt 'Input your app key' -AsSecureString
$plainKey =[Runtime.InteropServices.Marshal]::PtrToStringAuto([Runtime.InteropServices.Marshal]::SecureStringToBSTR($AppKey))
$ClientSecret = Read-Host -Prompt 'Input your client secret' -AsSecureString
$plainSecret =[Runtime.InteropServices.Marshal]::PtrToStringAuto([Runtime.InteropServices.Marshal]::SecureStringToBSTR($ClientSecret))
$testResult = Test-CsTeamsShiftsConnectionValidate `
-Name $ConnectionName `
-ConnectorId $UkgId `
-ConnectorSpecificSettings (New-Object Microsoft.Teams.ConfigAPI.Cmdlets.Generated.Models.ConnectorSpecificUkgDimensionsSettingsRequest `
-Property @{
apiUrl = $apiUrl
ssoUrl = $ssoUrl
appKey = $plainKey
clientId = $clientId
clientSecret = $plainSecret
LoginUserName = $WfmUserName
LoginPwd = $plainPwd
})
if ($NULL -ne $testResult.Code) {
Write-Output $testResult
throw "Validation failed, conflict found"
}
Write-Output "Test complete, no conflicts found"
#Create a connection
Write-Output "Creating a connection"
$ConnectionResponse = New-CsTeamsShiftsConnection `
-Name $ConnectionName `
-ConnectorId $UkgId `
-ConnectorSpecificSettings (New-Object Microsoft.Teams.ConfigAPI.Cmdlets.Generated.Models.ConnectorSpecificUkgDimensionsSettingsRequest `
-Property @{
apiUrl = $apiUrl
ssoUrl = $ssoUrl
appKey = $plainKey
clientId = $clientId
clientSecret = $plainSecret
LoginUserName = $WfmUserName
LoginPwd = $plainPwd
})
$ConnectionId = $ConnectionResponse.Id
if ($null -ne $ConnectionId){
Write-Output "Successfully created connection"
} else {
throw "Connection creation failed"
}
#Create a connection instance
Write-Output "Creating a connection instance"
$designatedActorName = Read-Host -Prompt "Input Microsoft 365 System Account (person@contoso.com)"
$designator = Get-MgUser -UserId $designatedActorName
$teamsUserId = $designator.Id
$syncFreq = Read-Host -Prompt "Input sync frequency in minutes"
$InstanceName = Read-Host -Prompt "Input connection instance name"
#Read sync scenarios for connection instance
function GetSyncScenarioSetting {
param (
$SettingName
)
$TwoWay = New-Object System.Management.Automation.Host.ChoiceDescription '&TwoWay', 'TwoWay'
$Disabled = New-Object System.Management.Automation.Host.ChoiceDescription '&Disabled', 'Disabled'
$FromWfmToShifts = New-Object System.Management.Automation.Host.ChoiceDescription '&FromWfmToShifts', 'FromWfmToShifts'
$options = [System.Management.Automation.Host.ChoiceDescription[]]($TwoWay, $Disabled, $FromWfmToShifts)
$result = $host.ui.PromptForChoice("Set sync scenario for $SettingName", "", $options, 0)
switch ($result)
{
0 { return "TwoWay" }
1 { return "Disabled" }
2 { return "FromWfmToShifts" }
}
}
$SyncScenarioOfferShiftRequest = GetSyncScenarioSetting "Offer Shift Request"
$SyncScenarioOpenShift = GetSyncScenarioSetting "Open Shift"
$SyncScenarioOpenShiftRequest = GetSyncScenarioSetting "Open Shift Request"
$SyncScenarioShift = GetSyncScenarioSetting "Shift"
$SyncScenarioSwapRequest = GetSyncScenarioSetting "Swap Request"
$SyncScenarioTimeCard = GetSyncScenarioSetting "Time Card"
$SyncScenarioTimeOff = GetSyncScenarioSetting "Time Off"
$SyncScenarioTimeOffRequest = GetSyncScenarioSetting "Time Off Request"
$SyncScenarioUserShiftPreference = GetSyncScenarioSetting "User Shift Preferences"
#Read admin email list
[psobject[]]$AdminEmailList = @()
while ($true){
$AdminEmail = Read-Host -Prompt "Enter admin's email to receive error report"
$AdminEmailList += $AdminEmail
$title = 'Adding another email'
$question = 'Would you like to add another admin email?'
$choices = '&Yes', '&No'
$decision = $Host.UI.PromptForChoice($title, $question, $choices, 1)
if ($decision -eq 1) {
break
}
}
$InstanceResponse = New-CsTeamsShiftsConnectionInstance `
-ConnectionId $ConnectionId `
-ConnectorAdminEmail $AdminEmailList `
-DesignatedActorId $teamsUserId `
-Name $InstanceName `
-SyncFrequencyInMin $syncFreq `
-SyncScenarioOfferShiftRequest $SyncScenarioOfferShiftRequest `
-SyncScenarioOpenShift $SyncScenarioOpenShift `
-SyncScenarioOpenShiftRequest $SyncScenarioOpenShiftRequest `
-SyncScenarioShift $SyncScenarioShift `
-SyncScenarioSwapRequest $SyncScenarioSwapRequest `
-SyncScenarioTimeCard $SyncScenarioTimeCard `
-SyncScenarioTimeOff $SyncScenarioTimeOff `
-SyncScenarioTimeOffRequest $SyncScenarioTimeOffRequest `
-SyncScenarioUserShiftPreference $SyncScenarioUserShiftPreference
$InstanceId = $InstanceResponse.id
if ($null -ne $InstanceId){
Write-Output "Success"
} else {
throw "Connector instance creation failed"
}
#Keep mapping teams until user stops it
$mappings=@()
while ($true)
{
#Create a new Teams team with owner set to system account and name set to the site name
Write-Output "Creating a Teams team"
$teamsTeamName = Read-Host -Prompt "Input the Teams team name"
$Team = New-Team -DisplayName $teamsTeamName -Visibility "Public" -Owner $teamsUserId
Write-Output "Successfully created a team"
$TeamsTeamId=$Team.GroupId
#Retrieve the list of wfm locations
Write-Output "Listing the WFM team sites"
$WfmTeamIds = Get-CsTeamsShiftsConnectionWfmTeam -ConnectorInstanceId $InstanceId
Write-Output $WfmTeamIds
if (($NULL -ne $WfmTeamIds) -and ($WfmTeamIds.Count -gt 0)){
[System.String]$WfmTeamId = Read-Host -Prompt "Input the ID of WFM team you want to map"
}
else {
throw "The WfmTeamId list is null or empty"
}
#Retrieve the list of WFM users and their roles
Write-Output "Listing WFM users and roles"
$WFMUsers = Get-CsTeamsShiftsConnectionWfmUser -ConnectorInstanceId $InstanceId -WfmTeamId $WfmTeamId
Write-Output $WFMUsers
#Add users to the Team for Shifts
Write-Output "Adding users to Teams team"
$currentUser = Read-Host -Prompt "Input the current user's user name or AAD ID"
Add-TeamUser -GroupId $TeamsTeamId -User $currentUser -Role Owner
$failedWfmUsers=@()
foreach ($user in $WFMUsers) {
try {
$userEmail = $user.Name + "@" +$domain
Add-TeamUser -GroupId $TeamsTeamId -User $userEmail
} catch {
$failedWfmUsers+=$user
}
}
if($failedWfmUsers.Count -gt 0){
Write-Output "There are WFM users not existed in Teams tenant:"
Write-Output $failedWfmUsers
}
#Enable scheduling in the group
$RequestBody = @{
Enabled = $true
TimeZone = "America/Los_Angeles"
}
$teamUpdateUrl="https://graph.microsoft.com/v1.0/teams/"+$TeamsTeamId+"/schedule"
Invoke-MgGraphRequest -Uri $teamUpdateUrl -Method PUT -Body $RequestBody
#Create a mapping of the new team to the instance
Write-Output "Create a mapping of the new team to the site"
$TimeZone = Read-Host -Prompt "Input the time zone of team mapping"
$mapping = @{
teamId = $TeamsTeamId
wfmTeamId = $WfmTeamId
timeZone = $TimeZone
}
$mappings += , $mapping
$title = 'Connecting another team'
$question = 'Would you like to connect another team?'
$choices = '&Yes', '&No'
$decision = $Host.UI.PromptForChoice($title, $question, $choices, 1)
if ($decision -eq 1) {
break
}
}
$batchMappingResponse = New-CsTeamsShiftsConnectionBatchTeamMap -ConnectorInstanceId $InstanceId -TeamMapping @($mappings)
if ($null -ne $batchMappingResponse.OperationId){
"The mapping has begun asynchronously. To query mapping results run Get-CsTeamsShiftsConnectionOperation with the operation Id."
}
else {
throw "The mapping has failed due to validation errors."
}
Write-Output $batchMappingResponse
Remove-TeamUser -GroupId $TeamsTeamId -User $currentUser -Role Owner
Disconnect-MgGraph
Konfigurera en anslutning och mappa ett befintligt team
#Map WFM instances to existing teams script
Write-Host "Map WFM sites to existing teams"
Start-Sleep 1
#Ensure Teams module is at least version x
Write-Host "Checking Teams module version"
try {
Get-InstalledModule -Name "MicrosoftTeams" -MinimumVersion 5.2.0
} catch {
throw
}
#Connect to MS Graph
Connect-MgGraph -Scopes "User.Read.All","Group.ReadWrite.All"
#List connector types available
Write-Output "Listing connector types available"
$UkgId = "95BF2848-2DDA-4425-B0EE-D62AEED4C0A0"
$connectors = Get-CsTeamsShiftsConnectionConnector
Write-Output $connectors
$Ukg = $connectors | Where-Object {$_.Id -match $UkgId}
if ($NULL -eq $Ukg) {
throw "UKG Dimensions not currently supported"
}
#Prompt for entering of WFM username and password
$WfmUserName = Read-Host -Prompt 'Input your UKG account username'
$WfmPwd = Read-Host -Prompt 'Input your UKG account password' -AsSecureString
$plainPwd =[Runtime.InteropServices.Marshal]::PtrToStringAuto([Runtime.InteropServices.Marshal]::SecureStringToBSTR($WfmPwd))
#Test connection settings
Write-Output "Testing connection settings"
$ConnectionName = Read-Host -Prompt 'Input connection name'
$apiUrl = Read-Host -Prompt 'Input connector api url'
$ssoUrl = Read-Host -Prompt 'Input connector sso url'
$clientId = Read-Host -Prompt 'Input connector client id'
$AppKey = Read-Host -Prompt 'Input your app key' -AsSecureString
$plainKey =[Runtime.InteropServices.Marshal]::PtrToStringAuto([Runtime.InteropServices.Marshal]::SecureStringToBSTR($AppKey))
$ClientSecret = Read-Host -Prompt 'Input your client secret' -AsSecureString
$plainSecret =[Runtime.InteropServices.Marshal]::PtrToStringAuto([Runtime.InteropServices.Marshal]::SecureStringToBSTR($ClientSecret))
$testResult = Test-CsTeamsShiftsConnectionValidate `
-Name $ConnectionName `
-ConnectorId $UkgId `
-ConnectorSpecificSettings (New-Object Microsoft.Teams.ConfigAPI.Cmdlets.Generated.Models.ConnectorSpecificUkgDimensionsSettingsRequest `
-Property @{
apiUrl = $apiUrl
ssoUrl = $ssoUrl
appKey = $plainKey
clientId = $clientId
clientSecret = $plainSecret
LoginUserName = $WfmUserName
LoginPwd = $plainPwd
})
if ($NULL -ne $testResult.Code) {
Write-Output $testResult
throw "Validation failed, conflict found"
}
Write-Output "Test complete, no conflicts found"
#Create a connection
Write-Output "Creating a connection"
$ConnectionResponse = New-CsTeamsShiftsConnection `
-Name $ConnectionName `
-ConnectorId $UkgId `
-ConnectorSpecificSettings (New-Object Microsoft.Teams.ConfigAPI.Cmdlets.Generated.Models.ConnectorSpecificUkgDimensionsSettingsRequest `
-Property @{
apiUrl = $apiUrl
ssoUrl = $ssoUrl
appKey = $plainKey
clientId = $clientId
clientSecret = $plainSecret
LoginUserName = $WfmUserName
LoginPwd = $plainPwd
})
$ConnectionId = $ConnectionResponse.Id
if ($null -ne $ConnectionId){
Write-Output "Successfully created connection"
} else {
throw "Connection creation failed"
}
#Create a connection instance
Write-Output "Creating a connection instance"
$designatedActorName = Read-Host -Prompt "Input Microsoft 365 System Account (person@contoso.com)"
$designator = Get-MgUser -UserId $designatedActorName
$teamsUserId = $designator.Id
$syncFreq = Read-Host -Prompt "Input sync frequency in minutes"
$InstanceName = Read-Host -Prompt "Input connection instance name"
#Read sync scenarios for connection instance
function GetSyncScenarioSetting {
param (
$SettingName
)
$TwoWay = New-Object System.Management.Automation.Host.ChoiceDescription '&TwoWay', 'TwoWay'
$Disabled = New-Object System.Management.Automation.Host.ChoiceDescription '&Disabled', 'Disabled'
$FromWfmToShifts = New-Object System.Management.Automation.Host.ChoiceDescription '&FromWfmToShifts', 'FromWfmToShifts'
$options = [System.Management.Automation.Host.ChoiceDescription[]]($TwoWay, $Disabled, $FromWfmToShifts)
$result = $host.ui.PromptForChoice("Set sync scenario for $SettingName", "", $options, 0)
switch ($result)
{
0 { return "TwoWay" }
1 { return "Disabled" }
2 { return "FromWfmToShifts" }
}
}
$SyncScenarioOfferShiftRequest = GetSyncScenarioSetting "Offer Shift Request"
$SyncScenarioOpenShift = GetSyncScenarioSetting "Open Shift"
$SyncScenarioOpenShiftRequest = GetSyncScenarioSetting "Open Shift Request"
$SyncScenarioShift = GetSyncScenarioSetting "Shift"
$SyncScenarioSwapRequest = GetSyncScenarioSetting "Swap Request"
$SyncScenarioTimeCard = GetSyncScenarioSetting "Time Card"
$SyncScenarioTimeOff = GetSyncScenarioSetting "Time Off"
$SyncScenarioTimeOffRequest = GetSyncScenarioSetting "Time Off Request"
$SyncScenarioUserShiftPreference = GetSyncScenarioSetting "User Shift Preferences"
#Read admin email list
[psobject[]]$AdminEmailList = @()
while ($true){
$AdminEmail = Read-Host -Prompt "Enter admin's email to receive error report"
$AdminEmailList += $AdminEmail
$title = 'Adding another email'
$question = 'Would you like to add another admin email?'
$choices = '&Yes', '&No'
$decision = $Host.UI.PromptForChoice($title, $question, $choices, 1)
if ($decision -eq 1) {
break
}
}
$InstanceResponse = New-CsTeamsShiftsConnectionInstance `
-ConnectionId $ConnectionId `
-ConnectorAdminEmail $AdminEmailList `
-DesignatedActorId $teamsUserId `
-Name $InstanceName `
-SyncFrequencyInMin $syncFreq `
-SyncScenarioOfferShiftRequest $SyncScenarioOfferShiftRequest `
-SyncScenarioOpenShift $SyncScenarioOpenShift `
-SyncScenarioOpenShiftRequest $SyncScenarioOpenShiftRequest `
-SyncScenarioShift $SyncScenarioShift `
-SyncScenarioSwapRequest $SyncScenarioSwapRequest `
-SyncScenarioTimeCard $SyncScenarioTimeCard `
-SyncScenarioTimeOff $SyncScenarioTimeOff `
-SyncScenarioTimeOffRequest $SyncScenarioTimeOffRequest `
-SyncScenarioUserShiftPreference $SyncScenarioUserShiftPreference
$InstanceId = $InstanceResponse.id
if ($null -ne $InstanceId){
Write-Output "Success"
} else {
throw "Connector instance creation failed"
}
#Keep mapping teams until user stops it
$mappings=@()
while ($true)
{
$TeamsTeamId = Read-Host -Prompt "Input the ID of the Teams team to be mapped"
#Clear schedule of the Teams team
Write-Host "Clear schedule of the existing team"
$entityTypeString = Read-Host -Prompt 'Input the entity types of clear schedule'
$Delimiters = ",", ".", ":", ";", " ", "`t"
$entityType = $entityTypeString -Split {$Delimiters -contains $_}
$entityType = $entityType.Trim()
$entityType = $entityType.Split('',[System.StringSplitOptions]::RemoveEmptyEntries)
Remove-CsTeamsShiftsScheduleRecord -TeamId $TeamsTeamId -ClearSchedulingGroup:$True -EntityType $entityType
#Retrieve the list of wfm locations
Write-Output "Listing the WFM team sites"
$WfmTeamIds = Get-CsTeamsShiftsConnectionWfmTeam -ConnectorInstanceId $InstanceId
Write-Output $WfmTeamIds
if (($NULL -ne $WfmTeamIds) -and ($WfmTeamIds.Count -gt 0)){
[System.String]$WfmTeamId = Read-Host -Prompt "Input the ID of WFM team you want to map"
}
else {
throw "The WfmTeamId list is null or empty"
}
#Retrieve the list of WFM users and their roles
Write-Output "Listing WFM users and roles"
$WFMUsers = Get-CsTeamsShiftsConnectionWfmUser -ConnectorInstanceId $InstanceId -WfmTeamId $WfmTeamId
Write-Output $WFMUsers
#Create a mapping of the existing team to the instance
Write-Host "Create a mapping of the existing team to the site"
$TimeZone = Read-Host -Prompt "Input the time zone of team mapping"
$mapping = @{
teamId = $TeamsTeamId
wfmTeamId = $WfmTeamId
timeZone = $TimeZone
}
$mappings += , $mapping
$title = 'Connecting another team'
$question = 'Would you like to connect another team?'
$choices = '&Yes', '&No'
$decision = $Host.UI.PromptForChoice($title, $question, $choices, 1)
if ($decision -eq 1) {
break
}
}
$batchMappingResponse = New-CsTeamsShiftsConnectionBatchTeamMap -ConnectorInstanceId $InstanceId -TeamMapping @($mappings)
if ($null -ne $batchMappingResponse.OperationId){
"The mapping has begun asynchronously. To query mapping results run Get-CsTeamsShiftsConnectionOperation with the operation Id."
}
else {
throw "The mapping has failed due to validation errors."
}
Write-Output $batchMappingResponse
Disconnect-MgGraph
Cmdletar för arbetspassanslutningar
Om du vill ha hjälp med Cmdletar för Shifts-anslutningsprogram, inklusive de cmdletar som används i skripten, söker du efter CsTeamsShiftsConnection i Teams PowerShell-cmdlet-referensen. Här är länkar till några vanliga cmdletar, grupperade efter kategori:
Anslutningar
Autentiseringsuppgifter för WFM-system
Synkroniseringsalternativ för scenarier som stöds
Ta bort schemadata
Anslutningsinstanser
- New-CsTeamsShiftsConnectionInstance
- Get-CsTeamsShiftsConnectionInstance
- Set-CsTeamsShiftsConnectionInstance
- Update-CsTeamsShiftsConnectionInstance
- Remove-CsTeamsShiftsConnectionInstance
Användarmappning och lyckad synkronisering
Teammappning
Åtgärds-ID
Felrapporter
Relaterade artiklar
- Arbetspassanslutningar
- Använda PowerShell för att hantera din Shifts-anslutning till UKG Pro Workforce Management
- Använd administrationscentret för Microsoft 365 för att hantera din Shifts-anslutning till UKG Pro Workforce Management
- Hantera appen Arbetspass
- Teams PowerShell översikt
- Referens för Teams PowerShell-cmdlet