2016-09-01 6 views
1

私は、特定のOUをADで照会し、名前、ステータス、開始モード、開始名、説明などのサービスごとにサービスを取得するpowershellスクリプトを開発しようとしています。私は本当に近いですが、私が期待している結果を得ていません。助けてもらえますか?powershellを使用してリモートサーバー上でサービスを取得

問題は、特定のサーバーのコマンドを具体的に実行すると、結果が得意です。 OU内のすべてのサーバーに対して実行すると、一意の開始名(ローカルアカウントのみ)は見つかりません。

:OUを(ローカルアカウントのみでサービスを返す)照会するため

$ServerName = “server01” 

Get-WmiObject win32_service -ComputerName $servername | Select @{N="ServerName";E={$ServerName}}, Name, Status, StartMode, StartName, description | Export-Csv "server_Services.csv" -NoTypeInformation 

スクリプト:私は、単一のコンピュータ(私たちが望む結果を得る)のサーバー名を持つ単一のCSV最初

スクリプトをしたいです

$ServerOU = 'OU=Servers,DC=some,DC=domain' $ServerList = Get-QADComputer -SearchRoot $ServerOU -SearchScope Subtree $ServerList | ForEach { $ServerNameTemp = $_.Name Get-WMIObject Win32_Service | Select @{N="ServerName";E={$ServerNameTemp}}, StartName, Name, StartMode, Status, description } | Export-Csv -NoTypeInformation $ExportFile 

答えて

0

これは私が思うが、OU内の各サーバーにファイルを作成したい場合は、同じファイルを上書きし続けることになります。 私もゲット-QADComputerをこの1のための探求のためのPowerShellのGet-ADComputerなし特定のニーズ:)

$ServerOU = 'OU=Servers,DC=some,DC=domain' 

$ServerList = Get-ADComputer -SearchBase $ServerOU -Filter * 

ForEach ($Server in $Serverlist) 
{ 
      Invoke-Command -ComputerName $Server.Name -ScriptBlock { 
       Get-WMIObject Win32_Service | 
       Select @{N="ServerName";E={[System.Net.Dns]::GetHostName()}}, StartName, Name, StartMode, Status, description} 
} | Export-Csv -NoTypeInformation $ExportFile 

にそれをファイルに、変数最初に、TIのすべてを送信します。この方法で変更しました。あなたがその前に任意のWINサーバを使用している場合

$ServerOU = 'OU=Servers,DC=some,DC=domain' 
$Services = @() 
$ServerList = Get-ADComputer -SearchBase $ServerOU -Filter * 

ForEach ($Server in $Serverlist) 
{ 
      $Services += Invoke-Command -ComputerName $Server.Name -ScriptBlock { 
       Get-WMIObject Win32_Service | 
       Select-Object @{N="ServerName";E={[System.Net.Dns]::GetHostName()}}, StartName, Name, StartMode, Status, description } 
} 

$Services | Export-Csv -NoTypeInformation $Exportfile 
+0

非常に優れていますが、一部のサーバーに接続する際に問題が発生しています。エラーメッセージの表示:リモートサーバーへの接続に失敗し、次のエラーメッセージが表示されました。クライアントが 要求に指定された宛先に接続できません。宛先のサービスが実行中で、要求を受け入れていることを確認します。 WS-Management servi ceのログおよびドキュメントを参照して、宛先(通常はIISまたはWinRM)で実行してください。宛先がWinRMサービスの場合は、 宛先で次のコマンドを実行して、WinRMサービスを分析および構成します。「winrm qu ickconfig」 – user5235857

+0

私はQADComputerも使用しなければなりませんでしたが、ADComputerは機能しませんでした。 – user5235857

+0

ああ、サーバー2003の場合は、リモートpowershell接続のサポートはまだできません。あるいは、リモートのPowerShellが無効になっているようなものです。最終的にはそれは本当に重要ではありませんが、Quest powershellはRegular PSと同じことを信じています。私は単にそれを変更しました。なぜなら、私はquest powershellをインストールしたくなかったからです:P – Kage

0

PSリモーティングを自動的に勝利2012年から有効になっている、あなたはPowerShellリモート処理を可能にするために、WinRMのサービスを有効にする必要があります。これらのサーバーに対して「Invoke-Command」またはそれらの「* -Session」コマンドレットを使用しようとする場合、これは非常に重要です。

関連する問題