0

ドメイン内のすべてのサーバーに接続し、各サーバーで実行されているすべてのサービスのテーブルを作成する単純なスクリプトが必要です。ただし、スクリプトを自動化してforeachループ内のすべてのサーバーを取得しようとすると、RPCエラーが発生します。$ name変数がサーバーDNS名に置き換えられた場合、すべてが期待どおりに機能します。システム(win7)とサーバー(2000-2008R2)のファイアウォールとDCOMサービスを確認しましたが、これらはすべて適切に有効または無効になっています。だから、私はスクリプトの何かが壊れていると思っています。私はまだPowerShellを学習しているので、ヒントをいただければ幸いです。

これがこれまでのスクリプトです。$ servernames = get-adobject -Filter'ObjectClass -eq "Computer"' -Searchbase "OU = Servers、DC = E、DC = BENEFIS、DC = ORG"

 foreach ($name in $servernames) {
        Get-WMIObject win32_service -computername $name -Property      SystemName,Name,StartName,StartMode | 
        Format-table SystemName, Name, Startname >c:\serverservices.txt }
4

1 に答える 1

1

返される各オブジェクトにはnameプロパティがあるため、その値をComputerNameパラメーターに渡す必要があります。さらに、コンピューターオブジェクトでGet-ADComputerコマンドレットを使用するには、ファイルにエクスポートするときに[追加]スイッチも指定する必要があります。そうしないと、コンテンツが上書きされ、最後に表示されるのは最後のコンピューターの出力のみです。

$servernames = Get-ADComputer -SearchBase "OU=Servers,DC=E,DC=BENEFIS,DC=ORG" -Filter *

foreach ($name in $servernames) 
{
        Get-WMIObject win32_service -computername $name.Name -Property SystemName,Name,StartName,StartMode |
        Format-table SystemName, Name, Startname | Out-File c:\serverservices.txt -Append
}
于 2012-09-27T22:43:25.330 に答える