Työvuorojen yhdistäminen UKG Pro Workforce Managementiin PowerShellin avulla
Yleiskatsaus
Integroi Shifts-sovellus Microsoft Teamsissa UKG Pro Workforce Managementin Microsoft Teams Shifts -liittimellä UKG Pro Workforce Managementiin (UKG Pro WFM). Etulinjan työntekijäsi voivat tarkastella ja hallita aikataulujaan saumattomasti UKG Pro WFM:ssä vuoroista alkaen.
Tässä artikkelissa kerrotaan, miten voit PowerShellin avulla määrittää ja määrittää liittimen integroimaan vaihtovuorot UKG Pro WFM:n kanssa.
Voit määrittää yhteyden suorittamalla PowerShell-komentosarjan. Komentosarja määrittää liittimen, ottaa käyttöön synkronointiasetukset, luo yhteyden ja yhdistää UKG Pro WFM -esiintymät (WFM-esiintymät) Teamsiin Teamsissa. Synkronointiasetukset määrittävät vuoroissa käytössä olevat ominaisuudet ja aikataulutiedot, jotka synkronoidaan UKG Pro WFM:n ja Vaihtojen välillä. Yhdistämismääritykset määrittävät WFM-esiintymien ja Tiimien välisen synkronointisuhteen Teamsissa. Voit yhdistää olemassa oleviin tiimeihin ja uusiin tiimeihin.
Tarjoamme kaksi komentosarjaa. Voit käyttää jompaakumpaa komentosarjaa sen mukaan, haluatko yhdistää olemassa oleviin tiimeihin vai luoda uusia ryhmiä, joita haluat yhdistää.
Voit määrittää useita yhteyksiä, joista jokaisella on erilaiset synkronointiasetukset. Jos organisaatiollasi on esimerkiksi useita sijainteja, joilla on erilaiset aikatauluvaatimukset, luo yhteys kunkin sijainnin yksilöllisten synkronointiasetusten avulla. Muista, että WFM-esiintymä voidaan yhdistää vain yhteen tiimiin milloin tahansa. Jos esiintymä on jo yhdistetty tiimiin, sitä ei voi yhdistää toiseen tiimiin.
Kun kirjausjärjestelmänä on UKG Pro WFM, etulinjan työntekijäsi voivat hallita tehokkaasti aikataulujaan ja käytettävyyttään laitteidensa työvuoroissa. Etulinjan johtajat voivat edelleen määrittää aikatauluja UKG Pro WFM:n avulla.
Huomautus
Voit käyttää myös Microsoft 365 -hallintakeskuksen ohjattua Vaihtovuorot-liitintä työvuorojen yhdistämiseen UKG Pro WFM:hen.
Alkuvalmistelut
Ennakkovaatimukset
Tarkastele tietoja ja suorita kaikki edellytykset ja määritystehtävät, jotka ovat kohdassa Teams Shifts -liittimen edellytykset ja vaatimukset UKG Pro Workforce Managementille.
Varmista, että suoritat kaikki tehtävät, ennen kuin noudatat tämän artikkelin ohjeita.
Järjestelmänvalvojan rooli liittimen hallintaan PowerShellin avulla
Sinun on oltava Microsoft 365:n yleinen järjestelmänvalvoja tai Shifts-yhdistimen järjestelmänvalvoja, jotta voit suorittaa tämän artikkelin vaiheet.
Shifts-liittimen järjestelmänvalvojan rooli on mukautettu rooli, jonka luot Microsoft Entra -tunnuksella ja määrität käyttäjälle. Roolin nimen on oltava Shifts-yhdistimen järjestelmänvalvoja. Roolilla ei tarvitse olla erityisiä käyttöoikeuksia, mutta vähintään yksi käyttöoikeus on määritettävä, kun luot sen. Palvelu luottaa rooliin käyttäjään sen käyttöoikeuksien sijaan.
Lisätietoja on artikkelissa Mukautetun roolin luominen ja määrittäminen Microsoft Entra ID: ssä ja Microsoft Entra -roolien määrittäminen käyttäjille. Muista, että roolin luominen ja lisääminen käyttäjään voi kestää jopa 24 tuntia.
Tärkeää
Microsoft suosittelee, että käytät rooleja, joilla on vähiten käyttöoikeuksia. Tämä auttaa parantamaan organisaatiosi suojausta. Yleinen järjestelmänvalvoja on hyvin etuoikeutettu rooli, joka tulisi rajata hätätilanteisiin, joissa et voi käyttää vähemmän etuoikeutettua roolia.
Ympäristön määrittäminen
Asenna PowerShellin versio 7 tai uudempi. Vaiheittaiset ohjeet ovat artikkelissa PowerShellin asentaminen Windowsiin.
Suorita PowerShell järjestelmänvalvojatilassa.
Asenna Microsoft Graph PowerShell -moduuli.
Install-Module Microsoft.Graph Import-Module Microsoft.Graph
Varmista, että kyseessä on versio 1.6.1 tai uudempi versio.
Get-InstalledModule Microsoft.Graph
Asenna Teams Preview PowerShell -moduuli.
Install-Module -Name MicrosoftTeams -AllowPrerelease -Force Import-Module MicrosoftTeams
Varmista, että kyseessä on vähintään versio 4.7.0 ja että se sisältää Shifts-yhdistimen cmdlet-komennot.
Get-Command -Module MicrosoftTeams -Name *teamsshiftsconnection*
Määritä PowerShell poistumaan, jos komentosarjaa suoritettaessa ilmenee virhe.
$ErrorActionPreference = "Stop"
Ota komentosarjat käyttöön Windowsissa.
Set-ExecutionPolicy bypass
Yhdistä Teamsiin
Muodosta yhteys Microsoft Teamsiin suorittamalla seuraava.
Connect-MicrosoftTeams
Kun näyttöön tulee kehote, kirjaudu sisään järjestelmänvalvojan tunnistetiedoilla. Olet nyt määritetty suorittamaan tämän artikkelin komentosarjat ja Shifts-yhdistimen cmdlet-komennot.
Yhdistettävien tiimien tunnistaminen
Huomautus
Suorita tämä vaihe, jos yhdistät WFM-esiintymiä aiemmin luotuihin tiimeihin. Jos olet luomassa uusia tiimejä, joita haluat yhdistää, voit ohittaa tämän vaiheen.
Siirry Azure-portaalissa Kaikki ryhmät -sivulle, jotta saat luettelon organisaatiosi tiimien TeamId-tunnusten luettelosta.
Ota huomioon yhdistettävien tiimien TeamId-tunnus. Komentosarja kehottaa antamaan nämä tiedot.
Huomautus
Jos yhdellä tai useammalla tiimillä on olemassa oleva aikataulu, komentosarja poistaa aikataulut kyseisistä tiimeistä. Muussa tapauksessa näet vuorojen kaksoiskappaleet.
Suorita komentosarja
Suorita jokin seuraavista komentosareista sen mukaan, luotko uuden tiimin vai yhdistätkö sen aiemmin luotuun tiimiin:
- Jos haluat määrittää yhteyden, luo uusi tiimi Teamsissa ja yhdistä WFM-esiintymä uuteen tiimiin suorittamalla uuden Teams-komentosarjan.
- Jos haluat määrittää yhteyden ja yhdistää WFM-esiintymiä Teamsin nykyisiin tiimeihin, suorita olemassa oleva Teams-komentosarja.
Noudata näytön ohjeita, kun suoritat komentosarjan. Komentosarja suorittaa seuraavat toiminnot:
Testaa ja tarkista yhteys UKG Pro WFM:hen KÄYTTÄMÄLLÄ UKG Pro WFM -palvelutilin tunnistetietoja ja palvelun URL-osoitteita, jotka annat.
Ota synkronointiasetukset käyttöön. Näitä asetuksia ovat synkronointitiheys (minuutteina) ja UKG Pro WFM:n ja Vaihtojen välillä synkronoidut aikataulutiedot. Voit ottaa käyttöön näissä skenaarioissa määritetyt aikataulutiedot:
Shift
, ,SwapRequest
,OfferShiftRequest
,UserShiftPreferences
,OpenShift
,OpenShiftRequest
, ,TimeOff
TimeOffRequest
.Lisätietoja on artikkelissa New-CsTeamsShiftsConnectionInstance. Jos haluat nähdä luettelon kunkin parametrin tuetuista synkronointivaihtoehdoista, suorita Get-CsTeamsShiftsConnectionConnector.
Huomautus
Komentosarja ottaa käyttöön jokaisen tuetun synkronointivaihtoehdon synkronoinnin. Jos haluat muuttaa synkronointiasetuksia, voit tehdä sen, kun yhteys on määritetty. Lisätietoja on artikkelissa Työvuorojen yhteyden hallinta PowerShellin avulla UKG Pro Workforce Managementiin.
Yhdistä WFM-esiintymät tiimeihisi Teamsissa.
- Jos päätät luoda uusia tiimejä suorittamalla uuden Teams-komentosarjan , yhdistämismääritykset perustuvat luomiasi uusiin tiimeihin.
- Jos päätät suorittaa aiemmin luodun Teams-komentosarjan aiemmin luotujen tiimien yhdistämiseksi, yhdistämismääritykset perustuvat WFM-esiintymätunnuksiin ja TeamId-tunnuksiin, jotka annat. Jos ryhmällä on olemassa oleva aikataulu, komentosarja poistaa kaikki aikataulutiedot.
Kun olet suorittanut komentosarjan, onnistumissanoma vahvistaa, onko yhteys määritetty onnistuneesti.
Hallitse yhteyttä
Kun yhteys on määritetty, voit hallita sitä ja tehdä siihen muutoksia Microsoft 365 -hallintakeskuksessa tai PowerShellin avulla.
Käytä Microsoft 365 -hallintakeskusta
Liittimien hallinta -sivulla on luettelo jokaisesta määrittämästäsi yhteydestä sekä tietoja, kuten kuntotila ja synkronointivälin tiedot. Voit myös käyttää ohjattua toimintoa ja tehdä muutoksia mihin tahansa yhteyksiin. Voit esimerkiksi päivittää synkronointiasetukset ja tiimien yhdistämismääritykset.
Lisätietoja on artikkelissa Työvuorot-yhteyden hallinta Microsoft 365 -hallintakeskuksessa UKG Pro Workforce Managementiin.
PowerShellin käyttäminen
PowerShellin avulla voit tarkastella virheraporttia, muuttaa yhteysasetuksia, poistaa synkronoinnin käytöstä ja paljon muuta. Vaiheittaiset ohjeet ovat artikkelissa Työvuorojen yhteyden hallinta PowerShellin avulla UKG Pro Workforce Managementiin.
Skriptit
Määritä yhteys ja luo uusi ryhmä
#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
Yhteyden määrittäminen ja olemassa olevan ryhmän yhdistäminen
#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
Vaihtoliittimen cmdlet-komennot
Saat lisätietoja Shifts-yhdistimen cmdlet-komennoista, mukaan lukien komentosarjoissa käytetyistä cmdlet-komennoista, artikkelista CsTeamsShiftsConnectionTeams PowerShellin cmdlet-viitteessä. Seuraavassa on linkkejä usein käytettyihin cmdlet-komentoihin luokan mukaan ryhmiteltyinä:
Yhteydet
WFM-järjestelmien tunnistetiedot
Tuettujen skenaarioiden synkronointiasetukset
Poista aikataulutiedot
Yhteysesiintymät
- New-CsTeamsShiftsConnectionInstance
- Get-CsTeamsShiftsConnectionInstance
- Set-CsTeamsShiftsConnectionInstance
- Update-CsTeamsShiftsConnectionInstance
- Remove-CsTeamsShiftsConnectionInstance
Käyttäjän yhdistäminen ja onnistunut synkronointi
Ryhmän yhdistäminen
Toiminnon tunnus
Virheraportit
Aiheeseen liittyviä artikkeleita
- Vuorot-yhdistimet
- PowerShellin avulla voit hallita vuorojen yhteyttä UKG Pro Workforce Managementiin
- Käytä Microsoft 365 -hallintakeskusta työvuorojen yhteyden hallintaan UKG Pro Workforce Managementiin
- Vuorot-sovelluksen hallinta
- Teams PowerShellin yleiskatsaus
- Teams PowerShellin cmdlet-komentoviittaus