PowerShell – MicrosoftTeams 2.3.1

Efter at Microsoft i februar pensionerede Skype for Business Connectoren og i marts udgav MicrosoftTeams Connectoren har der været diverse fejl og mangler. Det forsøgte, de at rette op på i version 2.3.0, men der var nogle børnesygdomme med blandt andet den indbyggede Windows-godkendelse og Set-CsUser. Det skulle nu være rettet i version 2.3.1.

Nye features og fejlrettelser:

Her er nogle af de vigtigste ændringer:

  • Microsoft fortæller at der er opdateringer til input-parametre og output formater for adskillige CMDlets. Blandt andet påvirkes Get-CsTeamsMeetingPolicy og GetCsTeamsMessagingPolicy. Dette synes harmløst, men kan påvirke diverse scripts, som har paramter-afhængigheder, som at output skal leveres i et bestemt format. Det anbefales derfor at teste scripts mod det nye modul.
  • Remote session management skal have fået et fix, der afhjælper et større forsinkelsesproblem (latency).
  • GA (Tilgængeligt for Alle) for CMDlets der kan styre Specialoprettet Group Policy tildeling. Således at man kan lave pakker eller sæt af policies der kan tildeles til grupper (Sikkerhedsgrupper, MS O365 grupper eller Distributionsgrupper. Dette kræver dog at man har Teams Advanced Communications licensen.

PowerShell ISE

Hvad er PowerShell ISE?

PowerShell ISE eller Integrated Scripting Enviroment er systemværktøj inkluderet i de senere Windows versioner. Det er inkluderet for at gøre det lettere at skrive og gøre sine scripts eller Cmdlets mere robuste, selvom man kunne have skrevet det i et hvert tekst-pogram.

PowerShell ISE ser ved første blik ud til at ligne Kommandprompt-vinduet, men værktøjet indeholder langt mere funktionalitet og understøtter at skrive kode. Det indeholder først og fremmest en fuld liste over de mest almindelige moduler og Cmdlets som en typisk administrator for brug for. Derudover er der et fint debugging værktøj, som kan teste din kode, finde fejl eller udfordringer og foreslå hvordan du fikser dem.

Som de fleste Udviklingsprogrammer, kan PowerShell ISE indstilles til at passe ens vante kodestil. Så du kan tilrette Baggrundsfarve, tekstfarve, skriftype, skriftstørrelse og tema. Script-filer oprettet i ISE har filendelsen .psi, som kun kan afvikles i PowerShell miljøer.

Har man tidligere benyttet Scriptsproget i Windows Kommandoprompt, vil det være genkendeligt i PowerShell. Objekttyper og Pipe virker også på en ensartet måde. Et godt eksempel er ping:

MicrosoftTeams 2.0.0 PowerShell modul

Microsoft udgav i starten af marts version 2.0.0 af Microsoft Teams PowerShell modulet. Den første mærkbare forskel er at Microsoft Teams PowerShell modulet ikke længere benytter sig af New-CsOnlineSession kommando, som man var vant til at bruge til at forbinde til Skype for Business Online PowersShell. Administratorer har nu fået Connect-MicrosoftTeams cmdlet til at forbinde sig til Microsoft Teams og Skype for Business Online til administration via PowerShell. Jeg vil i dette indlæg gennemgå forskellene på det gamle og det nyt modul.

Først og fremmest betyder det at man som administrator er nødt til at tilrette tidligere manuelle og automatiserede scripts oprettet med en connector til New-CsOnlineSession .

Kom i gang

Hvis du ikke allerede har installeret Microsoft Teams PowerShell module, skal du bruge Install-Module kommandoe til at installere modulet fra PowerShell Gallery. Install-Module -Name MicrosoftTeams. Hvis du får en advarsel om at installeret fra et Utrusted repository, skal du vælge Yes. Hvis du derefter ikke har tilstrækkelige (administrative) rettigheder til at installere skal du indsnævre installationen til nuværende bruger, sådan her: Install-Module -Name MicrosoftTeams -Scope CurrentUser. Brug Get-Module kommanden til at se hvilket version af modulet der er installeret. Hvis modulet ikke er installeret så tilføj parameteren -ListAvailable til kommandoen. Sådan her: Ge-Module -Name MicrosoftTeams -ListAvailable.

Microsoft Teams modulet indeholder fere kommandoer, der tidligere var inkluderet i Skype for Business Online PowerShell modulet. Som f.eks. Cs, CSTeams eller CsOnine. De blev tidligere tilgængelig når man importerede Skype Online PowerShell fjernsession, men de er nu med i Microsoft Teams modulet.

Du kan se en liste over kommandoer ved at skrive: Get-Command -Module MicrosoftTeams du kan eventuelt sortere dem på anden vis ved at Pipé og bruge Sort-Object kommandoen således:

Get-Command -Module MicrosoftTeams | Sort-Object CommandType -Descending

Forbind til dit Teams miljø på din tenant, ved at bruge Connect-MicrosoftTeams kommandoen. Her bliver du bedt om at logge på din konto med din Windows konto.

Når først man er forbundet, viser Powershell information omkring éns tenant, herunder, TenantId, Enviroment, Account og Tenant. Det er meget lig det man vil se når man forbinder til Azure AD PowerShell modulet. Er man så forbundet, har man adgang til både Microsoft Teams og de tidligere Skype Online PowerShell kommandoer.

Vil man gerne undgå at blive promptet for login-oplysninger, kan man gemme det i sessionen på denne måde:

$creds = Get-Credential

Connect-MicrosoftTeams -Credentials $creds

PowerShell for begyndere 1

Historie

Du har arbejdet med Kommandoprompt, BAT-filer og måske endda også Visual Basic scripts (VBScript), men tiden er løbet fra dem og Windows har i +10 år udviklet på PowerShell. PowerShell er måske anderledes end end gamle Kommandoprompt, men den fungerer på samme måde. Det er en tekstbaseret linjekonsol der har en masse stærke- og tidsbesparende funktionaliter.

Det er enkelt at starte PowerShell. Du skriver blot “powershell” i din Windows søgelinje, vælger programmet eller går i Kør og skriver powershell.

Så er du klar til dine første kommandoer:

De klassiske kommandoer: dir (Directory),cd (Change directory), ipconfig, netstat og meget andet virker stadig i PowerShell.

Cmdlets Command-lets

Cmdlets er det man kalder de enkelte scripts/funktioner i PowerShell. I hvert fald hvis man ikke tilgår .NET biblioteket direkte. Et Cmdlet har et eller flere definerede handlinger og kan kalde .NEt objekter. De kan stort set alt hvad du kan ønske dig: læsning og skrivning af filer, adgang til registreringsdatabasen, arrays, variabler, loops, start-stop af services og der udvikles hele tiden nye funktionaliteter. I denne guide vil vi dog gå let til værks med basale funktioner som at få hjælp get-help eller bruge en kommandoget-command.

En række af de mest almindelige “standard gets” er

  • Get-Service
  • Get-Process
  • Get-Help (Get-Help -Full)
  • Get-Command
  • Get-EventLog

Kigger vi på eksempelvis Get-Command kan man bruge *-funktionen | indsnævre ens søgning på kommandoer. Skriv f.eks Get-Command * Service

Så får man en liste over de Cmdlets der indeholder ordet service. Så hvis vi eksempelvis gerne vil genstarte en service, har vi nu fundet Restart-Service cmdlet. Vi ved endnu ikke hvordan vi anvender den, men det kan vi finde ud af mere omkring ved at skrive: Get-Help Restart Service.

Skulle det ikke være dækkende nok, kan man bare tilføjre parameteren -Online også åbner din browser Microsofts hjælpeside på den cmdlet man har forespurgt på:

New-Item – Oprette filer og mapper

Denne cmdlet benyttes til at oprette en mappe ved at opgive stien ved hjælp af -Path som stien til mappen og -ItemType som mappen.

F.eks New-Item -Path 'c:\test\Test mappe' -ItemType Directory. Det giver følgende Output:

Og som det ses i GUI dannes den:

Hvis vi så i stedet for en mappe ønsker at oprette en fil, ser det ikke meget forskelligt ud fra før. Den eneste forskel er at ItemType ændres fra Directory til File. Denne gang prøver vi at oprette en tekstfil med navnet test fil.txt:

Vi skriver i PowerShell: New-Item -Path 'c:\test\Test mappe\test fil.txt' ItemType File

Copy-Item – Kopiere en mappe eller fil

For at kopiere en mappe bruger vi kommandoen Copy-Item . I dette eksempel kopierer vi mappen c:\test\Test mappe\ til c:\test\Test mappe1\. Indtast følgende cmdlet i PowerShell prompten: Copy-Item 'c:\test\Test mappe\' 'c:\test\Test mappe1\'

Kigger vi i Test mappe1 kan vi se at denne er tom, men vi har jo lige oprettet test fil.txt tidligere… Det er fordi vi ikke har bedt om at få kopieret indholdet af mappen med over. En såkaldt rekursiv eller gentagen funktion. Det prøver vi nu. Skriv Copy-Item -Path 'c:\test\Test mappe\*' -Destination 'c:\test\Test mappe1\' -Recurse Nu følger både mappe og fil med over.

Remove-Item – Slette filer og/eller mapper

For at slette filer bruger man cmdlet Remove-Item og i dette eksempel sletter vi Test mappe1 Remove-Item 'c:\test\Test mappe 1'

Men der er jo filer i mappen, så PowerShell tjekker lige om man ønsker at slette de underliggende filer og mapper. Vi siger [N] nej og prøver igen, rekursivt.

Remove-Item 'c:\test\Test mappe 1' -Recursive

Princippet er akkurat det samme for sletning af filer som oprettelse

Remove-Item 'c:\test\Test mappe\Test fil.txt'

Move-Item – Flyt mappe og/eller filer

Move-Item 'c:\test\Test mappe\' 'c:\test\Test mappe1'

Move-Item 'c:\test\Test mappe\'Test fil.txt 'c:\test\Test mappe1'

Flytter filen fra Test mappe til Test mappe1