Экспорт значений $ PSDefaultParameterValues ​​из модуля сценария в PowerShell Core - PullRequest
1 голос
/ 15 июня 2019

Как экспортировать $PSDefaultParameterValues из модуля сценария в PowerShell Core? Каждый способ, который я пробовал до сих пор, приводил к замене $PSDefaultParameterValues области импорта на пустая хеш-таблица (независимо от того, было ли в ней определено в области импорта).

Пока попыток

Ниже приводится краткая версия всего, что я пробовал. Предположим, что модуль полностью содержится в файле $Env:TEMP\PSDefaultParameterValues.psm1, который импортируется через Import-Module -Name (Get-Item "$Env:TEMP\PSDefaultParameterValues.psm1").FullName. Я пробовал многие из следующих вариантов с заполненным и пустым $PSDefaultParameterValues в области импорта.

$PSDefaultParameterValues['*:WhatIf'] = $true
Export-ModuleMember -Variable 'PSDefaultParameterValues'
$PSDefaultParameterValues = $PSDefaultParameterValues
$PSDefaultParameterValues['*:WhatIf'] = $true
Export-ModuleMember -Variable 'PSDefaultParameterValues'
$PSDefaultParameterValues = $PSDefaultParameterValues.Clone()
$PSDefaultParameterValues['*:WhatIf'] = $true
Export-ModuleMember -Variable 'PSDefaultParameterValues'
$local:PSDefaultParameterValues = $PSDefaultParameterValues.Clone()
$PSDefaultParameterValues['*:WhatIf'] = $true
Export-ModuleMember -Variable 'PSDefaultParameterValues'
$script:PSDefaultParameterValues = $PSDefaultParameterValues.Clone()
$PSDefaultParameterValues['*:WhatIf'] = $true
Export-ModuleMember -Variable 'PSDefaultParameterValues'
Set-Variable -Name 'PSDefaultParameterValues' -Value ($PSDefaultParameterValues.Clone())
$PSDefaultParameterValues['*:WhatIf'] = $true
Export-ModuleMember -Variable 'PSDefaultParameterValues'
Set-Variable -Name 'PSDefaultParameterValues' -Value ($PSDefaultParameterValues.Clone()) -Scope Local
$PSDefaultParameterValues['*:WhatIf'] = $true
Export-ModuleMember -Variable 'PSDefaultParameterValues'
Set-Variable -Name 'PSDefaultParameterValues' -Value ($PSDefaultParameterValues.Clone()) -Scope Script
$PSDefaultParameterValues['*:WhatIf'] = $true
Export-ModuleMember -Variable 'PSDefaultParameterValues'

Окружающая среда

Тестовая среда была запущена с pwsh -Interactive -NoExit -NoLogo -NoProfile. Его $PSVersionTable выглядит следующим образом:

Name                           Value
----                           -----
PSVersion                      6.2.1
PSEdition                      Core
GitCommitId                    6.2.1
OS                             Microsoft Windows 10.0.17763 
Platform                       Win32NT
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0…}
PSRemotingProtocolVersion      2.3
SerializationVersion           1.1.0.1
WSManStackVersion              3.0

Редактировать (2019-06-15 03: 45: 58Z)

Я изначально заявил, что оба

$PSDefaultParameterValues['*:WhatIf'] = $true

и

$global:PSDefaultParameterValues['*:WhatIf'] = $true

привел к замене $PSDefaultParameterValues области импорта на пустую хеш-таблицу. Это неверно.

После повторного тестирования этих двух вариантов с использованием точно примеров, приведенных здесь, первый вариант, по-видимому, не влияет на область импорта $PSVersionTable, а второй вариант, по-видимому, изменяет его по желанию. У меня нет точного кода, который я использовал для первоначального тестирования (большая часть моего исходного тестирования была сделана ad hoc после того, как я столкнулся с проблемой, но ожидал найти быстрое и простое решение), поэтому я не знаю, почему я сейчас получаю другой результат.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...