Gennemse remoting-funktionen i Windows PowerShell
Remoting bruger en open-standard-protokol kaldet Web Services for Management (WS-Management eller WS-MAN). Som navnet antyder, er denne protokol bygget på den samme HTTP- eller HTTPS-protokol, som webbrowsere bruger til at kommunikere med webservere. Dette gør protokollen nemmere at administrere og dirigere gennem firewalls. Windows-operativsystemer implementerer protokollen ved hjælp af WinRM-tjenesten (Windows Remote Management). PowerShell understøtter remoting af WMI, WS-Management og Secure Shell (SSH). I PowerShell 6 understøttes rpc-baseret kommunikation (Remote Procedure Calls) ikke. I PowerShell 7 og nyere understøttes RPC kun i Windows.
Du skal aktivere fjernkørsel på de computere, hvor du vil modtage indgående forbindelser, selvom der ikke er behov for konfiguration på computere, der starter udgående forbindelser. PowerShell-fjernadgang er som standard aktiveret for indgående forbindelser på alle aktuelt understøttede versioner af Windows Server. Du kan også aktivere den på en hvilken som helst computer, der kører Windows PowerShell 3.0 eller nyere.
Seddel
Selvom remoting er aktiveret som standard på Windows Server-operativsystemer, er det som standard ikke aktiveret på klientoperativsystemer, herunder Windows 10 og Windows 11.
Windows PowerShell-remoting bruger WinRM, som kan administrere kommunikation for andre programmer. På en standardinstallation af Windows Server 2016 eller nyere administrerer WinRM f.eks. kommunikation for 64-bit Windows PowerShell, 32-bit Windows PowerShell og to Server Manager-komponenter.
Fjern arkitektur
Remoting starter med WinRM-tjenesten. Den registrerer en eller flere lyttere, hvor hver lytter accepterer indgående trafik via enten HTTP eller HTTPS. Hver lytter kan bindes til en enkelt lokal IP-adresse eller til flere IP-adresser. Der er ingen afhængighed af Microsoft Internet Information Services (IIS), hvilket betyder, at IIS ikke behøver at være installeret, for at WinRM kan fungere.
Indgående trafik indeholder en pakkeheader, der angiver trafikkens tilsigtede destination eller slutpunkt. I Windows PowerShell kaldes disse slutpunkter også sessionkonfigurationer. Hvert slutpunkt er knyttet til et bestemt program. Når trafik dirigeres til et slutpunkt, starter WinRM det tilknyttede program, fjerner den indgående trafik og venter derefter på, at programmet fuldfører sin opgave. Programmet kan sende data tilbage til WinRM, og WinRM sender dataene tilbage til den oprindelige computer.
I et Windows PowerShell-scenarie skal du sende kommandoer til WinRM, som derefter kører kommandoerne. Processen er angivet som Wsmprovhost- på fjerncomputerens procesliste. Windows PowerShell vil derefter køre disse kommandoer og konvertere de resulterende objekter (hvis der er nogen) til XML. XML-tekststrømmen sendes derefter tilbage til WinRM, som sender den til den oprindelige computer. Windows PowerShell på fjerncomputeren oversætter XML-koden tilbage til statiske objekter. Dette gør det muligt for kommandoresultaterne at fungere på samme måde som alle andre objekter i Windows PowerShell-pipelinen.
Windows PowerShell kan registrere flere slutpunkter eller sessionskonfigurationer med WinRM. Faktisk registrerer et 64-bit operativsystem som standard et slutpunkt for både 64-bit Windows PowerShell-værten og 32-bit værten. Du kan også oprette dine egne brugerdefinerede slutpunkter, der har meget præcise tilladelser og egenskaber, der er tildelt dem.
Windows PowerShell-remoting uden konfiguration
Mange Windows PowerShell-cmdlet'er har parameteren ComputerName, der giver dig mulighed for at indsamle data og ændre indstillinger på en eller flere fjerncomputere. Disse cmdlet'er bruger forskellige kommunikationsprotokoller og arbejder på alle Windows-operativsystemer uden nogen særlig konfiguration.
Disse cmdlet'er omfatter:
- genstartscomputerens
- testforbindelse
- Clear-EventLog-
- Get-EventLog-
- Get-HotFix-
- get-process-
- Get-Service-
- set-service-
- Get-WinEvent-
- Get-WmiObject-
Cmdlet'er, der understøtter fjernadgang uden særlig konfiguration, har typisk parameteren ComputerName og har ikke parameteren Session.
Hvis du vil finde disse cmdlet'er i din session, skal du angive:
Get-Command | where { $_.parameters.keys -contains "ComputerName" -and $_.parameters.keys -notcontains "Session"}
PowerShell-remoting over SSH
PowerShell-remoting bruger normalt WinRM til forbindelsesforhandling og datatransport. SSH er nu tilgængelig til Linux- og Windows-platforme og tillader ægte PowerShell-remoting med flere platforme.
WinRM leverer en robust hostingmodel til PowerShell-fjernsessioner. SSH-baseret remoting understøtter i øjeblikket ikke fjernkonfiguration af slutpunkter og Just Enough Administration (JEA).
SSH-remoting tilbyder grundlæggende PowerShell-sessioner mellem Windows- og Linux-computere. SSH-remoting opretter en PowerShell-værtsproces på destinationscomputeren som et SSH-undersystem. Microsoft planlægger til sidst at implementere en generel hostingmodel, der ligner WinRM, for at understøtte konfiguration af slutpunkter og JEA.
Seddel
De New-PSSession-cmdlet'er, Enter-PSSessionog Invoke-Command-cmdlet'er har nu et nyt parametersæt, der understøtter denne nye fjernforbindelse.
Hvis du vil bruge PowerShell-fjernstyring via SSH, skal du installere PowerShell 6 eller nyere og SSH på alle computere. Derefter skal du installere både SSH-klienten (ssh.exe) og server (sshd.exe) eksekverbare filer, så du kan fjernoverse til og fra computerne. OpenSSH til Windows er tilgængelig fra og med Windows 10 build 1809 og Windows Server 2019. Til Linux skal du installere den version af SSH (herunder sshd.exe-serveren), der passer til din platform. Du skal også installere den aktuelle version af PowerShell fra GitHub for at sikre, at SSH-remoting-funktionen er tilgængelig. Du skal konfigurere SSH-serveren til at oprette et SSH-undersystem til at hoste en PowerShell-proces på fjerncomputeren. Du skal også aktivere enten adgangskode eller nøglebaseret godkendelse.