2016-08-04 17 views
0

Ich habe Probleme, eine Liste von Remote-Maschinen zu überprüfen, wenn CredSSP aktiviert ist. Wenn mein Skript eine Verbindung zur Maschine herstellt und den Befehl ausführt. Es endet falsch. Wenn ich mich über RDP mit demselben Rechner verbinde und denselben Befehl ausführe, wird der Wert true zurückgegeben. Hier ist mein Skript:Überprüfen Sie, ob CredSSP mit Powershell remote aktiviert ist

foreach ($server in $servers.Split(",").Trim()) { 
    $pw = ConvertTo-SecureString 'password' -AsPlainText -Force 
    $cred = New-Object -TypeName System.Management.Automation.PSCredential -argumentList "Domain\user", $pw 
    $session = New-PSSession -ComputerName $server -Credential $cred 

    $output = (Get-Item WSMan:\localhost\Service\Auth\CredSSP).value 

    Write-Host $server : $output 

    Remove-PSSession -Session $session 
} 

Hat jemand einen Einblick in das?

Antwort

1

Sie sind nicht Get-Item remote ausgeführt.

Versuchen:

$ServerList = $servers.Split(",").Trim(); 
$pw = ConvertTo-SecureString 'password' -AsPlainText -Force; 
$cred = New-Object -TypeName System.Management.Automation.PSCredential -argumentList "Domain\user", $pw; 

Invoke-Command -ComputerName $ServerList -Credential $cred -ScriptBlock { Get-Item WSMan:\localhost\Service\Auth\CredSSP; } | 
    Select-Object PSComputerName, Value; 

könnten Sie Invoke-Command -Session $session anstelle Invoke-Command -ComputerName $ServerList, aber es gibt keine Notwendigkeit, eine Schleife und Chaos um das Erstellen und Entfernen von Sitzungen, die von Hand zu machen.

+0

Vielen Dank, das war hilfreich. Ich bin immer noch ziemlich neu in PS. Also, korrigiere mich, wenn ich falsch liege, aber das Umwickeln von Get-Item mit diesen Sitzungsrufen hat im Wesentlichen nichts bewirkt? Es wurde nur lokal ausgeführt? Gibt es eine Möglichkeit, dasselbe mit einer Sitzung zu erreichen? Ich könnte dieses Skript erweitern und es wird viel größer. – Anthony

+0

@Anthony Ja, das ist es genau. Es wurde lokal ausgeführt. Sie können Sitzungen mit Invoke-Command verwenden, dies ist jedoch in der Regel für komplexere Situationen erforderlich, in denen Sie mehrere verschiedene Skriptblöcke ausführen müssen oder den Sitzungsstatus anderweitig fernhalten müssen. Ich glaube nicht, dass ich seit langer Zeit etwas geschrieben habe, was es erfordert. Es funktioniert jedoch. –