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

One `Using` statement per script?

我正在编写一些脚本并利用新功能使它们更容易理解,因为我不受 PSv2 链的束缚。在这种情况下,我有许多正在使用的类型,我想通过导入名称空间来减少开销,就像在 C#.

中一样

让我先说我知道:

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

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

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

事实证明,编辑器并不完美。 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