Я не могу окунуться в трубку. Я прочитал Get-Help
и в Jon Dones его примеры, но я не могу понять это правильно. Поэтому я начал играть с функцией, которую я нашел в Интернете, чтобы выполнить блок сценария в определенной культуре (региональные настройки).
Мне удалось правильно обработать эти аргументы:
Use-Culture de-DE {Get-Date}, {Get-TimeStamp}
Use-Culture nl-BE {Get-Date}, {Get-TimeStamp}
Но когда я пытаюсь подключиться к Use-Culture
, он просто не работает вообще:
de-DE {Get-Date}, {Get-TimeStamp} | Use-Culture
nl-BE {Get-Date} | Use-Culture
Я чувствую, что здесь отсутствует базовая концепция. Был еще один вопрос о том, как StackOverlfow говорит об этой теме. Один парень сказал, чтобы использовать Foreach
а кто-то еще сказал работать -Inputobject
. Опять же, Дон Джонс использовал в своей Расширенной функции не такую вещь и заявил, что блок Process
получает итерацию для каждого объекта.
Какова наилучшая практика для подключения нескольких аргументов к функции? В этом случае несколько Script blocks
выполняются против одной и той же Culture
.
Благодарим вас за помощь, как всегда.
Function Use-Culture {
param(
[Parameter(
Mandatory=$true,Position=0,
ValueFromPipeline=$true,
ValueFromPipelineByPropertyName=$true)]
[System.Globalization.CultureInfo]$culture,
[Parameter(
Mandatory=$true,Position=1,
ValueFromPipeline=$true,
ValueFromPipelineByPropertyName=$true)]
[ScriptBlock[]]$code
)
process {
ForEach ($_ in $code) {
trap {
[System.Threading.Thread]::CurrentThread.CurrentCulture = $currentCulture
}
$currentCulture = [System.Threading.Thread]::CurrentThread.CurrentCulture
[System.Threading.Thread]::CurrentThread.CurrentCulture = $culture
Invoke-Command $_
[System.Threading.Thread]::CurrentThread.CurrentCulture = $currentCulture
}
}
}