2017-08-22 20 views
0

リモートサーバーのレジストリ設定(WSUSサーバー名)を変更するスクリプトを作成しようとしています。成功したスクリプトは、サーバーにパッチをインストールするリモートサーバーに格納されたexeファイルとVBScriptファイルを実行する必要があります。以下は私の進歩です。VBScriptでレジストリエディットスクリプトとexe実行を統合する方法

  1. サーバーのWSUS設定を変更します。これでリモートサーバー上のレジストリでWSUSサーバーを変更し、結果をCSVファイルで取得できるようになりました。
  2. 上記の手順が成功すると、私の下のスクリプトはリモートサーバ上で上記のコマンドを実行できるはずですが、これは現在起こっていません。

スクリプト:

#defined variables to use in script as below.## 
$Computers = Get-Content "C:\serverlist.txt" 
$Path  = "HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate" 
$property = "WUServer" 
$value  = "http://serverFQDN" 

$results = foreach ($computer in $Computers) { 
    if (Test-Connection -ComputerName $computer -Count 1 -Quiet) { 
     try { 
      Set-ItemProperty -Path $path -Name $Property -Value $Value -ErrorAction 'Stop' 
      $status = "WSUS server has been set to http://serverFQDN"       
      foreach ($computer in $Computers) { 
       # below step is not getting executed on remote servers. I do not 
       # get any error but above script do not execute any command on 
       # remote servers. 
       foreach ($computer in $computers) { 
        Invoke-Command -ScriptBlock { 
         C:\test\Patcher > cscript.exe -nologo test_v1.03.vbs /anlyze:false /reboot:false | Out-Null 
        } 
       } 
      } 
     } catch { 
      $status = "Failed" 
     } 
    } else { 
     $status = "Server is not reachable, please check connection and try again" 
    } 

    New-Object -TypeName PSObject -Property @{ 
     'Computer' = $computer 
     'Status' = $status 
    } 
} 

$results | Export-Csv -NoTypeInformation -Path "./out.csv" 

答えて

0

これは有効な構文ではありません。

C:\test\Patcher > cscript.exe -nologo test_v1.03.vbs ... 

文は(しよう)ディレクトリC:\testにあるコマンドPatcherを実行し、その出力をリダイレクトします現在の作業ディレクトリにファイルcscript.exeがあります。

おそらく、作業ディレクトリをC:\test\Patcherに変更し、そのディレクトリからtest_v1.03.vbsを実行します。これを行うには、これに上記の行を次のように変更します

Set-Location 'C:\test\Patcher' 
& cscript.exe //NoLogo test_v1.03.vbs /anlyze:false /reboot:false | Out-Null 
+0

を、これが支援してきましたが、コマンドは、私は、このスクリプトを実行するために使用していますローカルサーバー上でのみ実行を取得、それはserverlist.txtに言及した他のサーバに行きません –

+0

@VinitSリモートコンピュータ上でコマンドを呼び出すには、リモートコンピュータ上で実際にコマンドを呼び出す必要があります。 'Invoke-Command -Computer $ computer -ScriptBlock {...}' –

関連する問題