Webinar er nu en fast mødeform på Teams . Som udgangspunkt er der dog flere parametre der skal sættes i PowerShell. Disse vil jeg forsøge at gennemgå her:
PowerShell
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
ogGetCsTeamsMessagingPolicy
. 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