Я создаю вспомогательную функцию Azure Runbook, которая в конечном итоге выполняется на Hybrid Runbook Worker.
Чтобы максимально обобщить мой код, мне пришла в голову идея иметь функцию динамического создания блока сценариев, которыйопределяет имя и параметр командлета Exchange. Это то, что я имею до сих пор - комментарии представляют собой эксперименты, которые раскрывают некоторые шаги, которые я пробовал до публикации этой темы.
function Invoke-BSExchangeCommand{
[CmdletBinding()]
param (
[Parameter(Mandatory = $true)]
[string]
$CmdletName,
[Parameter(Mandatory = $false)]
[hashtable]
$ArgumentList,
[Parameter(Mandatory = $true)]
[ValidateNotNullOrEmpty()]
[System.Management.Automation.Runspaces.PSSession]
$Session
)
$scriptBlock = {
param ($invokeParams)
# Get-DistributionGroup @invokeParams
# $_::$CmdletName.Invoke($invokeParams)
$cmd = Get-Command -Name $CmdletName
& $cmd @invokeParams
}
$params = @{
Session = $Session
ArgumentList = $ArgumentList
ScriptBlock = $scriptBlock
}
Invoke-Command @params
}
Редактировать: я обнаружил, что "Командлет Get-Command "доступен / не ограничен в конечной точке Exchange.
Полученная мной ошибка является общей и дает много разных (не относящихся к делу) результатов поиска Google: Блок оператора Begin, Processблок операторов или оператор параметров недопустимы в разделе данных
Редактировать: моя отправная точка, которую я пытаюсь улучшить, заключается в том, что этот блок сценариев с определенным именем командлета работает:
$scriptBlock = {
param ($invokeParams)
Get-DistributionGroup @invokeParams
}
Спасибо!
- Андерс