2017-04-04 18 views
0

私は、リモートサーバがwinrmで有効になっていないときに、遠隔から有効にするためにwinrmを強制することができます。 psexecを使用していますか?powrmshellからpsexecを使用してwinrmを有効にする方法

**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.** 

私はこれを実行すると同時に(ここで$ホストは、ホスト名を与える)私のPowerShellスクリプトPSEXEC.EXE \ $ホスト-s PowerShellの「有効-PSRemotingの-force」にコマンドを追加しましたメッセージの下にもまた来ています。

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 

は「のWSManサービスは指定された要求を処理するためにホストプロセスを起動できませんでした」場合にのみ、条件を作成することは可能である、その後のWinRMを有効にするには、コマンドを実行します! 可能であればどうすればいいですか?

+0

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

答えて

0

機能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 

はちょうどあなたのスクリプトの最後にこの関数を呼び出すと、それはそれです。

スクリプトがあるフォルダにpstoolsがあることを確認してください。

+0

pstoolsがsystem32パスにある場合、パスをc:\ windows \ system32 \ pstools \ psexec.exe \\ $ computer -s C:\ Windows \ System32 \ winrm.cmd qc -quiet – Joe

+0

する必要があります。私の場合、PStoolsのフォルダにTempフォルダを入れ、そこにはスクリプトとcomputers.txtファイルがあります。他のフォルダにpstoolsがある場合は、そのパスを使用する必要があります。 –

+0

ありがとうたくさんのVladmir – Joe

関連する問題