2017-05-18 19 views
0

以下のリンクからPowerShellスクリプトをダウンロードしました。PowerShell Remotingパフォーマンスカウンタの収集

https://gallery.technet.microsoft.com/scriptcenter/PowerShell-Perfmon-0f013da8

私はローカルマシン上で正常にこのスクリプトを実行することができていますが、リモートマシン上の問題に直面。私は以下のコードを更新しました

(Get-Counter -ComputerName $ComputerName -Counter (Convert-HString -HString $Counter) -SampleInterval 2 -MaxSamples 10).counterSamples 

(Invoke-Command -ComputerName $ComputerName -ScriptBlock {Get-Counter -Counter (Convert-HString -HString $Counter) -SampleInterval 2 -MaxSamples 10}).counterSamples 

エラーが発生しました。

The term 'Convert-HString' is not recognized as the name of a cmdlet, function, script file, or operable program. 

答えて

1

機能は、あなたがそれを実行しようとしているリモートコンピュータ上に存在しない。あなたが前にそれを実行しようとしたとき、それがロードされているので、それを呼び出すには、あなたのスクリプトブロックでフル機能を貼り付ける必要があり。 Invoke-Command /別のマシン上のPSSessionを含むものは、そのマシンのコンテキストで実行しています。関数/モジュール/変数をローカルマシンにロードすると、ローカルマシン上にのみ存在します。

編集:Invoke-Command-ArgumentListのparamを使用してスクリプトブロックに

例パラメータ設定により-ScriptBlockに渡され、その後、$Counterは、ローカルマシン上で設定することができるようにする更新:

(Invoke-Command -ComputerName $ComputerName -ScriptBlock { 
    Param 
    (
    [parameter(Mandatory=$false,Position=0)] 
    [String] 
    $Counter 
    ) 
    function Global:Convert-HString {  
     [CmdletBinding()]    
     Param    
     (
      [Parameter(Mandatory = $false, 
       ValueFromPipeline = $true, 
       ValueFromPipelineByPropertyName = $true)] 
      [String]$HString 
     )#End Param 

     Begin { 
      Write-Verbose "Converting Here-String to Array" 
     }#Begin 
     Process { 
      $HString -split "`n" | ForEach-Object { 

       $ComputerName = $_.trim() 
       if ($ComputerName -notmatch "#") { 
        $ComputerName 
       }  


      } 
     }#Process 
     End { 
      # Nothing to do here. 
     }#End 

    }#Convert-HString 
    Get-Counter -Counter (Convert-HString -HString $Counter) -SampleInterval 2 -MaxSamples 10 
} -ArgumentList $Counter).counterSamples 
+0

をご提供していただけます例。 –

+0

は、リンクからスクリプトをダウンロードし、スクリプトブロックからスクリプトブロックに貼り付ける前に、呼び出す関数をコピーして貼り付けました –

+0

上記のコードを使用しているときにエラーが発生しました。必要な引数が指定されていないか、正しくありません。 + CategoryInfo:InvalidResult :(:) [Get-Counter]、例外 + FullyQualifiedErrorId:CounterApiError、Microsoft.PowerShell.Commands.GetCounterCommand + PSComputerName:server1 –