2017-04-04 1 views
0

Ich habe ein Powershell-Skript, um einige Betriebssystem-Validierung remote.Aber wenn der Remote-Server nicht aktiviert mit Winrm ich bekomme unten Nachricht.So wie kann ich erzwingen Winm remote aktivieren mit psexec? Dies ist die Ausführung und zugleichwie winrm kann mit psexec von powershell

**Connecting to remote server xxxxx.us.oim.com failed with the following error message : The WSMan service could not launch a host process to process the given request. Make sure the WSMan provider host server and proxy are properly registered.** 

Ich habe einen Befehl in meinem Powershell-Skript psexec.exe \ $ host es Powershell "Enable-PSRemoting -force" (hier $ host gibt die Hostnamen) hinzugefügt I Ich bekomme auch eine Nachricht.

PsExec.exe : Connecting to xxxxxxxxx.us.oim.com... 
At line:72 char:1 
+ PsExec.exe \\$fqdn -s powershell "Enable-PSRemoting -force" 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    + CategoryInfo   : NotSpecified: (Connecting to xxxxxxxxx.us.oim.com...:String) [], RemoteException 
    + FullyQualifiedErrorId : NativeCommandError 

Starting PSEXESVC service on xxxxxxxxx.us.oim.com...Connecting with PsExec service on xxxxxxxxx.us.oim.com...Starting powershell on xxxxxxxxx.us.oim.com... 
powershell exited on xxxxxxxxx.us.oim.com with error code 0 

Ist das möglich, einen Zustand nur zu schaffen, wenn „WSMan Dienst keinen Host-Prozess starten, könnte die gegebene Anforderung zu verarbeiten“, dann läuft Befehl winrm zu ermöglichen! Wenn möglich, lassen Sie mich bitte wissen, wie?

+0

https://community.spiceworks.com/scripts/show/2703-remotely-enable-winrm-powershell –

Antwort

0

Funktion enableWinRM {

$computers = Get-Content "C:\temp\computers.txt" 

foreach ($computer in $computers) { 

$result = winrm id -r:$computer 2> $null 

if ($lastExitCode -eq 0) { 
    Write-Host "WinRM already enabled on" $computer "..." -ForegroundColor green 
} else { 
    Write-Host "Enabling WinRM on" $computer "..." -ForegroundColor red 
    .\pstools\psexec.exe \\$computer -s C:\Windows\System32\winrm.cmd qc -quiet 

     if ($LastExitCode -eq 0) { 
      .\pstools\psservice.exe \\$computer restart WinRM 
      $result = winrm id -r:$computer 2>$null 

      if ($LastExitCode -eq 0) {Write-Host "WinRM successfully enabled!" -ForegroundColor green} 
      else {exit 1} 

     } #end of if 

    } #end of else 
} #end of foreach 

Rufen Sie diese Funktion am Ende des Skripts und das ist es.

Stellen Sie sicher, dass Sie pstools in dem Ordner haben, in dem sich Ihr Skript befindet.

+0

Angenommen, wenn Pstools System32-Pfad gefunden werden, müssen wir den Pfad als c: \ windows \ system32 \ ändern pstools \ psexec.exe \\ $ computer -s C: \ Windows \ System32 \ winrm.cmd qc -quiet – Joe

+0

Sie sollten. In meinem Fall habe ich PStools Ordner i Temp Ordner, zusammen, wo mein Skript ist und auch diese computers.txt Datei. Wenn Sie Pstools in einem anderen Ordner haben, sollten Sie diesen Pfad verwenden. –

+0

Vielen Dank Vladmir – Joe

Verwandte Themen