2

System.Management.AutomationC#でリモートデスクトップアプリを新規追加してみました。

pipeline.Commands.AddScript("new-item -path RDS:\\RemoteApp\\RemoteAppPrograms -name         ‘calc2’ -ApplicationPath \"%SYSTEMDRIVE%\\Windows\\system32\\calc.exe\"");

上記は、アプリケーションの作成に使用したコードです。しかし、それは

System.Management.Automation.ParameterBindingException:
  A parameter cannot be found that matches parameter name 'ApplicationPath'.

私の推測では、new-item コマンドレットには ApplicationPath パラメーターがありません。したがって、C# はエラーをスローします。これは Powershell プロンプトでは問題なく動作しますが。

どんな解決策も大歓迎です!

4

1 に答える 1

2

New-Itemコマンドレットにはパラメーターがありますが、Nameパラメーターがないため、そのApplicationPathエラーが発生しています。New-Item は、空のファイルやディレクトリなどの空の新しいアイテムを作成するために使用されます (少なくとも FileSystem プロバイダーでは)。ショートカットを作成しようとしていますか? ショートカットについては、次のようなものを試してください:

$wshshell = New-Object -ComObject WScript.Shell
$lnk = $wshshell.CreateShortcut("RDS:\\RemoteApp\\RemoteAppPrograms\\calc2.lnk")
$lnk.TargetPath = "\"$env:WINDIR\\system32\\calc.exe\""
$lnk.Save()

この場合の問題は、カスタム プロバイダーが ApplicationPath 動的パラメーターを提供していたことです。OPは、関連するモジュールをロードしていると考えていましたが、モジュールは64ビットプロセス用にインストールされ、ホスティングC#exeはx86(32ビット)としてコンパイルされたようです。モジュールが 32 ビット PowerShell で利用可能になると、問題は解決されました。

于 2012-09-19T16:58:41.987 に答える