Расширенные функции PowerShell трудно правильно подключить

Вопрос:

Я не могу окунуться в трубку. Я прочитал 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
}
}
}

Оцените статью
TechArks.Ru
Добавить комментарий