Один оператор `Using` на скрипт? - PullRequest
0 голосов
/ 10 мая 2018

Я работаю над написанием некоторых сценариев и использую новые функции, чтобы облегчить их понимание теперь, когда я не связан с моими цепочками PSv2. В этом сценарии у меня есть несколько типов, которые я использую, и я хочу уменьшить накладные расходы, импортируя пространство имен, как это было бы в C#.

Позвольте мне начать с того, что я знаю о:

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

Это работает , но я хочу, чтобы мои сценарии были чище без использования обходных путей. Оператор using должен быть первой строкой без комментариев в скрипте, и когда я пытался разделить запятые пространства имен, он выдавал ошибки, когда пытался объединить их все в одну строку (даже если я разделил их кавычками или включены цитаты на всех, в этом отношении). Эта функция не очень хорошо документирована, поэтому я надеюсь, что у кого-то еще есть более глубокие знания из опыта.

Мой вопрос: оператор using поддерживает несколько пространств имен или модулей из скрипта?

1 Ответ

0 голосов
/ 10 мая 2018

Как оказалось, редакторы не идеальны. Не существует ограничения для 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
...