2016-04-04 10 views
3

WMCクラスWin32_TSGatewayServerのメソッドを実行しようとしているときに問題が発生しました.PowerhellでServer 2012 R2のリモートデスクトップゲートウェイの役割を使用しています。Powershell WMI:Win32_TSGatewayServerクラスメソッドへのパラメータ渡しの問題

私の目標は、リモートデスクトップゲートウェイの設定をあるシステムから別のシステムにエクスポート/インポートすることです。 Win32_TSGatewayServerは、必要なメソッドが含まれているようだ:

私はそれを拡張し、特定の仕事を得ることができたが、私はにExportType/ImportTypeパラメータを渡すために失敗していますメソッド呼び出し。私は現在、使用しています何

は次のとおりです。

$source = Get-WmiObject -Namespace root\CIMV2\TerminalServices -Class Win32_TSGatewayServer -ComputerName rdg1 
$destination = Get-WmiObject -Namespace root\CIMV2\TerminalServices -Class Win32_TSGatewayServer -ComputerName rdg2 
$settings = $source.Export(0).XmlString 
$destination.Import(0,$settings,$null) 

これは、全体の構成をインポート/エクスポートするようです。

ImportTypeパラメータを指定してエクスポート/インポートを呼び出す方法はありますか。どんなに私がしようとするもの、私は0に異なるパラメータを指定するたびに、それはサーバー2012 R2を使用して

PS C:\Windows\system32> $source.Export(1) 
Exception calling "Export" : "" 
At line:1 char:1 
+ $source.Export(1) 
+ ~~~~~~~~~~~~~~~~~ 
    + CategoryInfo   : NotSpecified: (:) [], MethodInvocationException 
    + FullyQualifiedErrorId : WMIMethodException 

アップデート1

を失敗しました。目的は、GUIでのエクスポート/インポート機能の動作を完全に模倣することです。

JamesQMurphyの答えは、ビットマップをどのようにハンドリングするかをより明確に示しています。コメントで簡単に述べたように、いくつかのパラメータ(0,32,33など)でExport()を使用できましたが、動作するはずのもの(1,3,5など)は失敗します。

これは、以下の考え方に私を導く:それはそうでない場合は、例外がスローされますよう各通話用のファイルを生成します

for ($i = 0; $i -le 128; $i++) 
{ 
    $source.Export($i).XmlString | Out-File C:\temp\$i.txt 
} 

が成功しました。それから私は、すべてのファイルを見るためにハッシュ化された

  • 32-63
  • 96-127

:結果から、128個のパラメータのうち65が有効な輸出を生成していることが明らかでしたその内容が異なり、同じハッシュを持つ唯一のファイルがエクスポート(0)とエクスポート(127)のものです。

ビットマップは少なくとも部分的には動作するようですが、MSDNの記事(これは質問を投稿してビットテーブルの代わりにint値を反映して以来のものです)とは異なるマッピング(?)を使用しています

答えて

1

エラーメッセージの[]には、実際には単一のオブジェクトではなくオブジェクトのコレクションがあることが示されています。これは$source.GetType()を呼び出して確認できます。この場合

$source = Get-WmiObject -Namespace root\CIMV2\TerminalServices -Class Win32_TSGatewayServer -ComputerName rdg1 
$source.GetType() 

IsPublic IsSerial Name   BaseType 
-------- -------- ----   -------- 
True  True  Object[]  System.Array 

、そしてあなたが最初オブジェクトに興味を持っているという事実のために、あなたは、単に$source[0].Export(1).XmlStringを呼び出すことができますあなたが知っている:タイプが実際にobject[]されている場合は、コレクションを持っています。それ以外の場合は、ForEach-Objectでコレクションをループする必要があります。または、結果をSelect-Object -First 1にパイプすることもできます。

もう一つの注:ImportExport方法のドキュメントはImportTypeの値がビット値であることを述べます。これは、実際の値列の値を渡す必要があることを意味します。組み合わせが必要な場合は、値を追加することもできます。

Bit Number Actual Value  Meaning 
---------- ------------  ------- 
    0    1   Export all RD CAPs 
    1    2   Export a list of all Network Policy Server (NPS) servers. 
    2    4   Export all RD RAPs. 
    3    8   Export all resource groups. 
    4    16   Export a list of all load-balancing servers. 
    5    32   Export all RD Gateway-related server settings. 
+0

ご返信ありがとうございます。私の場合、$ source.GetType()は配列ではなく実際のオブジェクトを返すので、メソッドを正しく呼び出すことができます。しかし、私はビットマスクについては不明です。 Export(0)、Export(32)、Export(33)は異なる値を返しますが、Export(1)、2、5は例外を返します。 – leepfrog

1

テストするRDSはありませんが、静的メソッドのように聞こえます。お試しください:

$source = Invoke-WmiMethod -Namespace "root\CIMV2\TerminalServices" -Class "Win32_TSGatewayServer" -Name "Export" -ArgumentList 1 -ComputerName "rdg1" 
$xml = $source | Select-Object -ExpandProperty XmlString 
$destination = Invoke-WmiMethod -Namespace "root\CIMV2\TerminalServices" -Class "Win32_TSGatewayServer" -Name "Import" -ArgumentList 1, $xml -ComputerName "rdg1" 

#If you need a value for MergeOrReplace, try: 
#$destination = Invoke-WmiMethod -Namespace "root\CIMV2\TerminalServices" -Class "Win32_TSGatewayServer" -Name "Import" -ArgumentList 1, $xml, 0 -ComputerName "rdg1" 
+0

Invoke-WmiMethod:無効なメソッドパラメータ 行番号:1 char:1 + Invoke-WmiMethod -Namespace "root \ CIMV2 \ TerminalServices" -Class "Win32_TSGatewa(最初のInvoke-Methodをテストする) ... + + CategoryInfo:はInvalidOperation:(:)、ManagementException [-WmiMethodを起動] + FullyQualifiedErrorId:InvokeWMIManagementExceptionは、Microsoft.PowerShell.Commands.InvokeWmiMethod' – leepfrog

+0

は、このリターンを 'しPSComputerNameとを除くどのような性質(__ *)( Get-WmiObject -Namespace root \ CIMV2 \ TerminalServices -Class Win32_TSGatewayServer -List).GetMethodParameters( "Export") '? –

+0

ExportTypeのみリストされています:http://pastebin.com/jZDFLV87 – leepfrog

関連する問題