2016-12-30 35 views
0

目的のコード:サーバーの特定のオブジェクトプロパティを抽出します。私は、次のコードでこれらのサーバのリストを取得します。new-object:PowerShellスクリプトの "Server"と引数count: "* numberofservers *"のオーバーロードが見つかりません

$serverlist = (get-adcomputer -filter {dnshostname -like "*SQL*" -and operatingsystem -like "windows *server*"}).name 

私は、その後にリスト内のそれぞれの名前を反復処理:

$serverlist | ForEach-Object { 

    $s = new-object Microsoft.SqlServer.Management.SMO.Server($serverlist) 

$s | Format-List @{Name = "Server";e={$s.Name}}, 
    @{Name = "VersionString";e={$s.VersionString}}, 
    @{Name = "Product Level";e={$s.ProductLevel}}, 
    @{Name = "Collation";e={$s.Collation}}, 
    @{Name = "Credentials";e={$s.Credentials}}, 
    @{Name = "Clustered?";e={$s.IsClustered}}, 
    @{Name = "One Owner?";e={$s.IsSingleUser}}, 
    @{Name = "Root";e={$s.RootDirectory}} | Out-File -path -append 

Iとして「サーバ」のための新しいオブジェクトのオーバーロードのエラーが表示されますサーバーがあるので何度も。私はこの問題を引き起こす原因が本当にわからない。コードは、$ serverlistのために1つのコンピュータ名をハードコードしたときに問題なく動作しました。 I.

$serverlist = @("Some-Server-01") 

入力の際にサーバーのリストを使用すると、このエラーが発生しました。ヘルプをいただければ幸いです。

さらにエラー情報:

At C:\somepath 
+ $s = new-object Microsoft.SqlServer.Management.SMO.Server($serverli ... 
+ CategoryInfo   : InvalidOperation: (:) [New-Object], MethodException 
+ FullyQualifiedErrorId : ConstructorInvokedThrowException,Microsoft.PowerShell.Commands.NewObjectCommand 
+1

あなたは '' $ _' – BenH

答えて

1

おそらく、ADのコンピュータオブジェクトの配列です$ServerListに基づいていない個々のサーバの名前に基づいて新しいServerオブジェクトを、作成したいです。オブジェクト配列($ServerList)の各項目に対して1回実行されるforeachループ内で作業していることを忘れないでください。

コンピュータオブジェクトの配列を使用してSQL SMO Serverオブジェクトを作成することはできません。個々のシステムの名前に基づいて作成します。

$s = New-Object -TypeName Microsoft.SqlServer.Management.SMO.Server -ArgumentList $PSItem 
+0

は '$を切り替え変更すると、' $のserverlist'を交換してみ '$ S =新しいオブジェクトMicrosoft.SqlServer.Management.SMO.Server($のサーバリスト)に配列全体を渡しています'$ s = new-object Microsoft.SqlServer.Management.SMO.Server($ serverlist)'の '$ _'で' serverlist'を実行することもやってしまいました。 – Kemilio

+0

$ _と$ PSItemの両方は、パイプライン内の現在のオブジェクトを意味します。 PSitemはPowerShell 3で追加され、より読みやすくなっています。しかし、後方互換性と簡潔さのために、$ _が使用法でより一般的です。 – BenH

関連する問題