每个脚本一个`Using`语句?

时间:2018-05-10 10:32:54

标签: .net powershell powershell-v5.0

我正在努力编写一些脚本并利用新功能让它们更容易理解,因为我已经从我的PSv2链中解除绑定。在这种情况下,我使用了许多类型,我希望通过导入命名空间来减少开销,就像在C#中一样。

让我通过说我知道来开始这个:

. ([scriptblock]::Create('Using Namespace Example.Namespace'))

有效,但我希望我的脚本更清晰,而不使用变通方法。 using语句必须是脚本中第一个未注释的行,当我尝试用逗号分隔命名空间时,它会给我错误,因为它试图将它们全部组合成一个字符串(即使我用引号分隔它们) ,或者包含引号(就此而言)。这个功能没有很好的文档记录,所以我希望其他人从经验中获得更多的洞察力。

我的问题:using语句是否支持脚本中的多个命名空间或模块?

1 个答案:

答案 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