Powershell remoting: How to connect to a non domain joined host with powershell?


In deze blog probeer ik uit te leggen hoe je via powershell remoting verbinding kunt maken met een windows host die (nog) geen lid is van een domein.

Om deze verbinding op te kunnen zetten via remoting (port 5985/5986) moet de remote host worden toegevoegd aan de WSMan trustedhosts.
Note : Dit doe je op de source host van waaruit je de verbinding wilt maken.

Eerst gaan we kijken waar de trustedhosts worden opgeslagen. Hiervoor openen we powershell. Ik gebruik zelf powershell versie 5.1.
Vervolgens gaan we naar de WSMAN drive met het commando.
WSMan configuratie is te benaderen via een ps-drive. (get-psdrive). De trusted hosts staan in de “map” localhost\client\Trustedhosts.
start het command cd WSMan:\localhost\client\TrustedHosts 

Via het commando get-item WSMan:localhost\client\TrustedHosts kunnen we zien welke hosts er op dit moment reeds zijn toegevoegd. Default is deze leeg.


Note : Met het commando  clear-Item WSMan:localhost\Client\TrustedHosts -force maak je de trustedhosts weer leeg.


Om nu  direct de waarde uit te lezen gebruiken we het commando (get-item WSMan:localhostClientTrustedHosts).Value
Hieronder een snel voorbeeld met daarbij een write-host met het resultaat.


Nu we weten waar de trusted hosts zijn opgeslagen is het tijd om de host(s) die we willen benaderen toe te voegen. We kunnen hiervoor het IP-adres of de hostnaam gebruiken mits deze natuurlijk te resolven is. (DNS of hosts File).


Note : Let op dat je powershell als Administrator hebt geopend om de juiste rechten te hebben.


Voor het toevoegen van een host aan de trustedhosts gebruiken we het cmdlet set-item. Het kan zijn dat er al reeds trusted hosts zijn toegevoegd. Daarom gaan we gebruik maken van de variabelen $paramHash . In deze variabelen plaatsen we de huidige trusted hosts en voegen we de nieuwe eraan toe. De variabelen met daarin de toegevoegde host schrijven we vervolgens weg in de WSMan provider d.m.v. set-item.

In powershell willen alles juist herhaalbaar maken. Daarom maken we er een functie van met parameters zodat we dit kunnen hergebruiken.


Tip : gebruik in de Powershell_ISE  ctrl+J om voorbeelden van functies te openen.


Als de functie is geladen kunnen we deze als cmdlet aanroepen met de juiste parameter.

Connect to remote Host
De trusted host is nu toegevoegd. Om verbinding te kunnen maken met de remote host hebben we nu alleen nog de local administrator credentials nodig. Als dit een nieuw geïnstalleerde host is dan moet het default administrator account wel een wachtwoord hebben. Zo niet dan krijg je een foutmelding.

De eerste stap in dit voorbeeld is het maken van een variabelen met de remote credentials. Via het cmdlet invoke-command gaan we proberen om de remote hostname uit te lezen.  Hiervoor hebben we alleen nog het IP-adres/computernaam en de remote credentials nodig.  Als het werkt krijg je de computernaam van de remote host terug.

In plaats van invoke-command kun je ook het commando enter-pssession -computername $trustedhost -credential $localcredential gebruiken. Via dit commando open je de commandline op de remote server.

Tot slot heb ik hieronder nog een link naar het script


Download het script :  


Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *