我无法弄清楚如何正确地投射PSSession以用作函数中的参数。
我是否需要装载组件或其他东西?我正在使用Powershell v4。
我喜欢投射我的函数参数以确保正确使用。我正在尝试的是:
function Some-Remote-Task([PSSession] $Session, [String]$Target) {
# Do stuff...
}
但是我在投射参数时遇到了这个错误:
Unable to find type [PSSession]. Make sure that the assembly that contains this type is loaded.
此外,在有效会话中使用$mySession.GetType()
会产生以下结果:
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True False PSSession System.Object
所以看起来应该是正确的类型名称......
感谢所有帮助。
答案 0 :(得分:8)
试试这个:
function Some-Remote-Task([System.Management.Automation.Runspaces.PSSession]$Session, [String]$Target) {
# Do stuff...
}
答案 1 :(得分:0)
编辑:
我现在可以正确使用[PSSession]
。
结合来自biantist评论中链接的信息:Type Accelerator
这里有另一个答案:Simplify Your Script...
我正确添加了类型加速器:
PS c:\> [PowerShell].Assembly.GetType("System.Management.Automation.TypeAccelerators")::add(“PSSession”,”System.Management.Automation.Runspaces.PSSession”)
PS c:\> [PSSession]
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True False PSSession System.Object
WAS:
最后我使用了别名。发布给其他喜欢干净外观的人。
New-Alias PSSession System.Management.Automation.Runspaces.PSSession
-ErrorAction SilentlyContinue
如果您不断重新运行相同的代码段,在测试期间添加它是有用的。