每个脚本一个 `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
我正在编写一些脚本并利用新功能使它们更容易理解,因为我不受 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