我正在努力编写一些脚本并利用新功能让它们更容易理解,因为我已经从我的PSv2
链中解除绑定。在这种情况下,我使用了许多类型,我希望通过导入命名空间来减少开销,就像在C#
中一样。
让我通过说我知道来开始这个:
. ([scriptblock]::Create('Using Namespace Example.Namespace'))
此有效,但我希望我的脚本更清晰,而不使用变通方法。 using
语句必须是脚本中第一个未注释的行,当我尝试用逗号分隔命名空间时,它会给我错误,因为它试图将它们全部组合成一个字符串(即使我用引号分隔它们) ,或者包含引号(就此而言)。这个功能没有很好的文档记录,所以我希望其他人从经验中获得更多的洞察力。
我的问题:using
语句是否支持脚本中的多个命名空间或模块?
答案 0 :(得分:1)
事实证明,编辑并不完美。 Using
语句没有限制,只要它们是脚本中的第一个非注释语句并且是连续的。
使用示例:
#Requires -Version 5
Using Namespace System.Net
Using Namespace System.Net.Sockets
Using Module MyModule # this assumes MyModule is in the $Env:PSModulePath
[CmdletBinding()]
Param()
[TcpClient]::new().
Connect(
@([Dns]::GetHostEntry('localhost').AddressList)[0],
5985
)
[MyClass].FullName