Błąd „Root element is missing” przy wywołaniu Runbooka SMA

Najczęściej taki błąd pojawia się, gdy z poziomu bloku inline lub z funkcji wywoływany jest inny Runbook. Zachowanie takie jest niedozwolone.
Ostatnio spotkałem się z innym powodem tego błędu.
Normalnie w Powershellu możliwe jest indeksowanie tablicowe obiektu zwracanego z wyrażenia objętego nawiasami:

1
$var = (get-service)[0]

W przypadku użycia takiego wyrażenia w SMA zwracany jest właśnie błąd „Root element is missing”

Błąd Orchestrator 2012 R2 REST OIP: HTTP Version should be either 1.0 or 1.1

Dzisiaj szybka diagnostyka problemu przedstawionego w tytule postu.
Rozważamy następujący scenariusz:

  1. Orchestrator 2012 R2 zainstalowany na serwerze Windows 2012 R2
  2. Zaimportowany Integration Pack dla REST
  3. Skonfigurowane ustawienia regionalne które zakładają separator dziesiętny inny niż kropka (’.’)
  4. W parametrach akcji „Invoke Rest Service” jest wprowadzona zgodna z dokumentacją wartość ciągu „1.0” lub „1.1”

W Polsce, mamy Z scenariuszem takim mamy do czynienia zazwyczaj , gdzie zwyczajowym separatorem dziesiętnym jest przecinek.
I to właśnie on jest powodem powstania problemu, w przypadku gdy jesteśmy pewni że ostatni punkt scenariusza został zrealizowany prawidłowo.
Wewnątrz implementacji tej akcji znajduje się odpowiednik następującego kodu (tutaj przytaczam powershell, aby łatwo było potwierdzić diagnozę):

1
2
3
4
5
6
7
$result = 0;
$HTTPVersion = "1.1"
$status = [float]::TryDecode($HTTPVersion, [ref]$result);
if(($status -ne $true) -or ($HTTPVersion -ne "1.0") -or ($HTTPVersion -ne "1.1"))
{
"Return Error: HTTP Version should be either 1.0 or 1.1";
}

W sytuacji, gdy w ustawieniach regionalnych separator dziesiętny nie jest ustawiony na znak '.' to w linii numer 3 zostanie ustawione $status == $false.
Rozwiązaniem jest ustawić klucz rejestru HKU\SID\Control Panel\International\sDecimal
oraz HKU\SID\Control Panel\International\sMonDecimalSep dla użytkownika o wartości SID na znak

1
'.'

Na koniec należy zrestartować usługę orchestratora, a problem zostanie rozwiązany.

Po raz pierwszy opisałem temat odpowiadając na pytanie rosyjskojęzycznej osoby z technet’u.