2

使用System.Management.Automation我尝试在 C# 中添加新的远程桌面应用程序。

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'.

我的猜测是新项目 cmdlet 没有 ApplicationPath 参数。所以 C# 会抛出一个错误。虽然这在 Powershell 提示符下工作正常。

任何解决方案表示赞赏!

4

1 回答 1

2

New-Itemcmdlet 有一个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 回答