Как экспортировать $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 после того, как я столкнулся с проблемой, но ожидал найти быстрое и простое решение), поэтому я не знаю, почему я сейчас получаю другой результат.