Ради бедных душ (таких как я), которые часами изучали, как этого добиться с помощью .NET MessageQueue, можно создавать очереди в кластеризованном MSMQ без Powershell:
Environment.SetEnvironmentVariable("_CLUSTER_NETWORK_HOSTNAME_", "yourclustername", EnvironmentVariableTarget.User);
Environment.SetEnvironmentVariable("_CLUSTER_NETWORK_NAME_", "yourclustername", EnvironmentVariableTarget.User);
var path = @"yourclustername\Private$\yourprivatequeuepath";
MessageQueue.Create(path, false);
Протестировано на сервере 2012.
ПРЕДУПРЕЖДЕНИЕ. Будьте осторожны при настройке переменных среды, поскольку впоследствии их может быть трудно очистить ДАЖЕ, если вы устанавливаете их с помощью EnvironmentVariableTarget.User.Кроме того, кажется, что необходимо устанавливать переменные среды, только если вы пытаетесь получить доступ к частной очереди в кластере с компьютера в cluster.
Если вы случайно установили переменные среды, вы можете очистить их в реестре по адресу HKCU \ Environment.Одна проблема, которая может возникнуть, если вы запускаете код в другом пользовательском контексте, в котором установлены переменные среды.В одном случае я смог войти в систему как этот пользователь, а затем удалить их из реестра, но в другом случае я отлаживал веб-сайт под IIS, и учетная запись LOCALSYSTEM установила их.Чтобы очистить их, я опубликовал веб-сайт с нулевыми значениями.Вы также хотите проверить значения переменных env для .User, .Process и .Machine.Обратите внимание, что изменения в области .Process не вступают в силу, пока машина не будет перезапущена, если рассматриваемый процесс LOCALSYSTEM.