So fügen Sie mit winrm mehr als einen Computer zur Liste der vertrauenswürdigen Hosts hinzu

82

Um Powershell-Befehle auf einem Computer von einem Remotecomputer aus auszuführen, müssen Sie den Remotecomputer zur Liste der vertrauenswürdigen Hosts des Hostcomputers hinzufügen.

Ich füge Maschine A mit dem folgenden Befehl zu den vertrauenswürdigen Hosts von Maschine B hinzu:

winrm set winrm/config/client ‘@{TrustedHosts="machineA"}’

Wie füge ich weitere Maschinen hinzu, z. B. Maschine C, Maschine D, zur Liste der vertrauenswürdigen Hosts von Maschine B?

cmm Benutzer
quelle

Antworten:

126

Ich arbeite lieber mit dem PSDrive WSMan:\.

Holen Sie sich TrustedHosts

Get-Item WSMan:\localhost\Client\TrustedHosts

Legen Sie TrustedHosts fest

Geben Sie eine einzelne, durch Kommas getrennte Zeichenfolge von Computernamen an

Set-Item WSMan:\localhost\Client\TrustedHosts -Value 'machineA,machineB'

oder (gefährlich) eine Wildcard

Set-Item WSMan:\localhost\Client\TrustedHosts -Value '*'

Zum Anhängen an die Liste kann der -ConcatenateParameter verwendet werden

Set-Item WSMan:\localhost\Client\TrustedHosts -Value 'machineC' -Concatenate
dhcgn
quelle
Gibt es eine Möglichkeit, Hosts an die Liste anzuhängen? weil ich keine API zum Anhängen finden konnte.
Schnee
11
Sie können mit -Wert "machineB" -Concatenate
SxMT
@dhcgm Diese Lösung funktioniert NICHT für domänengesteuerte Server, deren Authentifizierung auf Kerberos basiert . Kannst du bitte bestätigen ? Trotz des Hinzufügens expliziter vertrauenswürdiger Hosts kann ich weiterhin nicht vertrauenswürdige Hosts verwenden, um auf den Server zuzugreifen, solange ich Administratorrechte auf dem Server habe. Ich denke, das funktioniert nur für Arbeitsgruppencomputer. Vielen Dank.
objectNotFound
@objectNotFound In meiner Umgebung habe ich Powershell Remoting nur auf Arbeitsgruppencomputern verwendet, daher kann ich Ihre These nicht bestätigen. Aber ich klinge plausibel.
Dhcgn
63
winrm set winrm/config/client '@{TrustedHosts="machineA,machineB"}'
Loïc MICHEL
quelle
19
Wenn jemand eine Error: Invalid use of command line ...Antwort erhält , versuchen Sie, die einfachen Anführungszeichen zu entfernen
svarog
Das funktioniert bei mir einfach nicht, einfache Anführungszeichen oder nicht. Ich bekomme trotzdem Error: Invalid use of command.
Hylle
@svarog für mich war es umgekehrt. Ich musste einfache Anführungszeichen hinzufügen . Vorher hatte ich den gleichen Fehler Error: Invalid use of command.
Bruno Bieri
10

Die vorgeschlagene Antwort von Loïc MICHEL schreibt blind einen neuen Wert in den Eintrag TrustedHosts.
Ich glaube, ein besserer Weg wäre, zuerst TrustedHosts abzufragen. Fragen Sie,
wie Jeffery Hicks 2010 veröffentlichte , zuerst den Eintrag TrustedHosts ab:

PS C:\> $current=(get-item WSMan:\localhost\Client\TrustedHosts).value
PS C:\> $current+=",testdsk23,alpha123"
PS C:\> set-item WSMan:\localhost\Client\TrustedHosts –value $current
Verändertes Ego
quelle
5

Ich habe ein Modul erstellt, um den Umgang mit vertrauenswürdigen Hosts etwas zu vereinfachen, psTrustedHosts . Das Repo finden Sie hier auf GitHub. Es bietet vier Funktionen , die mit vertrauenswürdigen Hosts machen die Arbeit einfach: Add-TrustedHost, Clear-TrustedHost, Get-TrustedHost, und Remove-TrustedHost. Sie können das Modul mit dem folgenden Befehl aus der PowerShell-Galerie installieren:

Install-Module psTrustedHosts -Force

Wenn Sie in Ihrem Beispiel die Hosts 'machineC' und 'machineD' anhängen möchten, verwenden Sie einfach den folgenden Befehl:

Add-TrustedHost 'machineC','machineD'

Damit werden die Hosts 'machineC' und 'machineD' zu allen bereits vorhandenen Hosts hinzugefügt, vorhandene Hosts werden nicht überschrieben.

Der Add-TrustedHostBefehl unterstützt auch die Pipeline-Verarbeitung (ebenso wie der Remove-TrustedHostBefehl), sodass Sie auch Folgendes tun können:

'machineC','machineD' | Add-TrustedHost
Jason Boyd
quelle
@HerbM Domainnamen funktionieren einwandfrei. Bereiche mit Platzhaltern scheinen nur für einen einzelnen Wert zu funktionieren, dh Sie können eine durch Kommas getrennte Liste von Maschinen oder eine Zeichenfolge mit Platzhaltern haben, jedoch keine durch Kommas getrennte Liste, in der einer der Werte in der Liste einen Platzhalter enthält. Dies sieht nach einem WinRM-Problem aus. Sie können einen Wert mit einer Subnetzmaske hinzufügen, dieser scheint jedoch nicht als Netzwerkbereich zu interpretieren, wenn Sie versuchen, eine Verbindung zu einem Computer im Bereich herzustellen, sodass dies nicht zu funktionieren scheint.
Jason Boyd
2
Und anscheinend müssen Sie das "Subnetz" des armen Mannes (an Oktettgrenzen) und nicht die CIDR- oder MASK-Notation verwenden: 192.168.230. * NICHT: 192.168.224.0/19 # oder was auch immer
HerbM