Lager til planlagte prompter

Brug PowerShell til at opgøre planlagte prompter, som brugere opretter i din Microsoft Copilot-organisation. Disse instruktioner hjælper dig med at oprette forbindelse til en administratorkonto og effektivt få vist, vise eller slette planlagte prompter.

Forudsætninger

Hvis du vil gøre status over planlagte prompter, som brugere opretter i din organisation, skal du bruge følgende forudsætninger:

  • Tildel rollen Power Platform Administrator til din bruger på Azure Portal for den lejer, hvor du vil udføre handlinger.
  • Brug PowerShell v7.0 eller nyere.
  • Installer modulerne Az.Accounts og Microsoft.PowerApps.Administration.PowerShell . For mere information, se Install-Module.
  • Gem og kør alle scripts i samme mappe.

Vigtigt!

Brug roller med færrest tilladelser. Konti med færre tilladelser er med til at forbedre sikkerheden i din organisation. Global administrator er en meget privilegeret rolle. Begræns brugen til nødsituationer, hvor du ikke kan bruge en eksisterende rolle. Du kan få flere oplysninger under Om administratorroller i Microsoft 365 Administration.

Hvis du vil have rollen som systemadministrator i Copilot-miljøet med planlagte prompter, skal du følge disse trin:

  • Gå til Power Platform Administration.
  • Vælg Microsoft 365-miljøet . Denne værdi er standardnavnet for Copilot-miljøet til planlagte prompter. Din lejer bruger muligvis et andet navn.
  • Vælg Medlemskab.
  • Hvis du vil føje rollen som systemadministrator til brugeren, skal du vælge Tilføj mig. Det kan tage omkring 30 minutter, før rollen afspejles overalt.

Du kan få mere at vide under Administrere administratorroller med høje rettigheder.

Opret forbindelse til din Azure-konto

Før du kører en af følgende PowerShell-kommandoer, skal du logge på din administratorkonto. Brug Connect-AzAccount-cmdletten til at logge på.

Generelle handlinger

  1. Hvis du vil hente miljønavnet for planlagte Copilot-prompter, skal du bruge Get-AdminPowerAppEnvironment-cmdlet'en . Hvis du bliver bedt om det, skal du oprette forbindelse til administratorkontoen.

    Get-AdminPowerAppEnvironment 'Microsoft 365'
    

    Angiv dit viste navn. Det viste navn er som standard .Microsoft 365 Du kan også bruge parameteren EnvironmentName til at angive dit miljønavn.

  2. Du kan også identificere et bruger-id med følgende Microsoft Entra-cmdletter:

    Connect-Entra
    
    Get-EntraUser -UserId 'user@domain.com'
    

    Brug det korrekte bruger-id, f.eks user@domain.com. . Bemærk Id værdien i outputtet, som angiver brugerens id.

Gem PowerShell-scripts

Følgende scripts hjælper dig med at opgøre planlagte prompter for Copilot. De angivne scriptnavne svarer til de scripts, der refereres til i resten af denne artikel. Gem og kør scriptene i den samme mappe.

Get-CopilotActions.ps1

Param(

    [Parameter(Mandatory=$true)]

    [string]$EnvironmentId,

    [Parameter(Mandatory=$false)]

    [string]$UserId
)

Begin {

    $ErrorActionPreference = "Stop"

    # Retrieve the environment URL using the environment ID

    $environment = Get-AdminPowerAppEnvironment -EnvironmentName $EnvironmentId

    if (-not $environment) {

        throw "Environment with ID '$EnvironmentId' not found."
    }

    $environmentUrl = $environment.Internal.properties.linkedEnvironmentMetadata.instanceUrl

    # Retrieve the access token

    $secureToken = (Get-AzAccessToken -AsSecureString -ResourceUrl $environmentUrl).Token

    $plainTextToken  = ConvertFrom-SecureString -SecureString $secureToken -AsPlainText

    $headers = @{

        "Authorization" = "Bearer $plainTextToken"

        "OData-MaxVersion" = "4.0"

        "OData-Version" = "4.0"

        "Accept" = "application/json"

        "Content-Type" = "application/json; charset=utf-8"

        "Prefer" = 'odata.include-annotations="*"'
    }
}

Process {

    # Convert UserId to systemuserid if UserId is provided

    if ($UserId) {

        $userQueryUri = "${environmentUrl}api/data/v9.1/systemusers?`$filter=azureactivedirectoryobjectid eq '$UserId'"

        try {

            Write-Verbose "Retrieving systemuserid for UserId $UserId from $userQueryUri"

            $userResponse = Invoke-RestMethod -Uri $userQueryUri -Headers $headers -Method Get

            if ($userResponse.value.Count -eq 0) {

                throw "No system user found for UserId '$UserId'."
            }

            $systemUserId = $userResponse.value[0].systemuserid

            Write-Verbose "Successfully retrieved systemuserid: $systemUserId"

        }

        catch {

            Write-Error "Failed to retrieve systemuserid for UserId '$UserId': $_"

            throw
        }

        $requestUri = "${environmentUrl}api/data/v9.1/crb73_copilotactions?`$filter=_createdby_value eq $systemUserId"

    } else {

        $requestUri = "${environmentUrl}api/data/v9.1/crb73_copilotactions"
    }

    try {

        Write-Verbose "Retrieving Copilot Actions from $requestUri"

        $response = Invoke-RestMethod -Uri $requestUri -Headers $headers -Method Get

        $records = $response.value | ForEach-Object {

            [PSCustomObject]@{

                DataverseId = $_.crb73_copilotactionid

                Name = $_.crb73_name

                CreatedOn = $_.createdon

                ModifiedOn = $_.modifiedon

                BotType = $_.crb73_bottype

                CreatedById = $_._createdby_value

                CreatedByFullName = $_.'_createdby_value@OData.Community.Display.V1.FormattedValue'

                Status = $_.crb73_status

                EnvironmentId = $EnvironmentId
            }
        }

        # Ensure $records is treated as an array

        if ($null -ne $records) {

            if ($records -isnot [System.Collections.IEnumerable]) {

                $records = @($records)
            }
        } else {
            $records = @()
        }

        Write-Verbose "Successfully retrieved $($records.Count) Copilot Actions"

        $records | Write-Output
    }

    catch {

        Write-Error "Failed to retrieve records from Dataverse: $_"

        throw
    }
}

Remove-CopilotActions.ps1

Param(

    [Parameter(Mandatory=$true, ValueFromPipelineByPropertyName=$true)]

    [string]$EnvironmentId,

    [Parameter(Mandatory=$true, ValueFromPipelineByPropertyName=$true)]

    [string]$DataverseId

)

Begin {

    $ErrorActionPreference = "Stop"

    $environmentInformation = @{}
}

Process {

    # Retrieve the environment URL using the EnvironmentId

    if (-not $environmentInformation.ContainsKey($EnvironmentId)) {

        $environment = Get-AdminPowerAppEnvironment -EnvironmentName $EnvironmentId

        if (-not $environment) {

            Write-Error "Environment with ID '$EnvironmentId' not found."

            return
        }

        $environmentUrl = $environment.Internal.properties.linkedEnvironmentMetadata.instanceUrl

        # Retrieve and store the access token for the environment

        $secureToken = (Get-AzAccessToken -AsSecureString -ResourceUrl $environmentUrl).Token

        $plainTextToken = ConvertFrom-SecureString -SecureString $secureToken -AsPlainText

        $environmentInformation[$EnvironmentId] = @{

            Url    = $environmentUrl

            Token  = $plainTextToken
        }
    }

    $environmentUrl = $environmentInformation[$EnvironmentId].Url

    $plainTextToken = $environmentInformation[$EnvironmentId].Token

    $headers = @{

        "Authorization" = "Bearer $plainTextToken"

        "OData-MaxVersion" = "4.0"

        "OData-Version" = "4.0"

        "Accept" = "application/json"

        "Content-Type" = "application/json; charset=utf-8"

    }

    # Construct the delete URI

    $deleteUri = "${environmentUrl}api/data/v9.1/crb73_copilotactions($DataverseId)"

    try {

        Write-Verbose "Deleting Copilot Action with DataverseId: $DataverseId using URI: $deleteUri"

        Invoke-RestMethod -Uri $deleteUri -Headers $headers -Method Delete

        Write-Host "Successfully deleted Copilot Action with DataverseId: $DataverseId"
    }

    catch {

        Write-Error "Failed to delete Copilot Action with DataverseId: $DataverseId. Error: $_"
    }
}

Clear-CopilotActions.ps1

Param(

    [Parameter(Mandatory=$true)]

    [string]$EnvironmentId,

    [Parameter(Mandatory=$true)]

    [string]$UserId
)

Process {

    # Retrieve and pipe Copilot Actions for the specified user into Remove-CopilotAction.ps1

    Write-Verbose "Retrieving and deleting Copilot Actions for UserId: $UserId"

    ./Get-CopilotActions.ps1 -EnvironmentId $EnvironmentId -UserId $UserId | ./Remove-CopilotAction.ps1
}

Vis planlagte prompter til Copilot

Du kan køre et script på forskellige måder for at få vist planlagte prompter, du har oprettet i din lejer.

Få en liste over planlagte Copilot-prompter for hele lejeren

  1. Brug cmdlet'en Get-AdminPowerAppEnvironment til at få .EnvironmentId Du kan finde flere oplysninger i Generelle handlinger.

  2. Kør scriptet, Get-CopilotActions.ps1 og angiv din EnvironmentId. Hvis du bliver bedt om det, skal du logge på med administratorkontoen. Det kan f.eks. være:

    .\Get-CopilotActions.ps1 -EnvironmentId abc123-a100-xyz000-12345
    

    Konsoloutputtet viser listen over planlagte Copilot-prompter.

Få en liste over planlagte Copilot-prompter for en enkelt bruger

  1. Brug cmdlet'erne Get-AdminPowerAppEnvironment og Get-EntraUser til at få EnvironmentId og UserId. Du kan finde flere oplysninger i Generelle handlinger.

  2. Kør scriptet Get-CopilotActions.ps1 med din EnvironmentId og UserId. Hvis du bliver bedt om det, skal du logge på med administratorkontoen. Det kan f.eks. være:

    .\Get-CopilotActions.ps1 -EnvironmentId abc123-a100-xyz000-12345 -UserId abc123-a100-xyz000-12345
    

    Konsoloutputtet viser listen over planlagte Copilot-prompter, der tilhører den angivne bruger.

Eksportér listen

Hvis du vil eksportere listen til en CSV-fil, skal du starte med en af de tidligere indstillinger for at få en liste. Rør derefter outputtet til Export-Csv-cmdlet'en . Det kan f.eks. være:

.\Get-CopilotActions.ps1 -EnvironmentId abc123-a100-xyz000-12345 | Export-Csv -Path C:\temp\resultFile.csv

Slet planlagte Copilot-prompter

Slet en enkelt planlagt Copilot-prompt

  1. Brug en af de forrige indstillinger til at få en liste over planlagte prompter. I outputtet skal du notere den DataverseId planlagte prompt, du vil slette.

  2. Brug cmdlet'en Get-AdminPowerAppEnvironment til at få .EnvironmentId Du kan finde flere oplysninger i Generelle handlinger.

  3. Kør scriptet Remove-CopilotActions.ps1 med de relevante EnvironmentId værdier DataverseId . Hvis du bliver bedt om det, skal du logge på med administratorkontoen. Det kan f.eks. være:

    .\Remove-CopilotAction.ps1 -EnvironmentId abc123-a100-xyz000-12345 -DataverseId abc123-a100-xyz000-12345
    

Slet flere planlagte Copilot-prompter fra en enkelt bruger

  1. Hent værdierne EnvironmentId og UserId som beskrevet i Generelle handlinger.

  2. Kør scriptet Clear-CopilotActions.ps1 med de relevante EnvironmentId værdier UserId . Hvis du bliver bedt om det, skal du logge på med administratorkontoen. Det kan f.eks. være:

    .\Clear-CopilotActions.ps1 -EnvironmentId abc123-a100-xyz000-12345 -UserId abc123-a100-xyz000-12345