Отправьте команды администрирования в мою службу Windows C# с помощью собственного PowerShell CmdLets

Вы не можете использовать forEach в такой ситуации.

Вместо этого, поскольку вы используете параллелизм на основе обещаний, вам придется превратить каждый запрос в обещание (arr.map(num => ...)), а затем обернуть все из них в Promise.all, который сам возвращает обещание, которое разрешается после все завернутые обещания решаются.

let arr = [1, 2, 3, 4, 5, 6];

Promise.all(
  arr.map(num =>
    request("http://google.com")
      .get("/")
      .then(() => {
        console.log(num);
      })
  )
).then(() => {
  console.log("HERE");
});
9
задан Robert Mircea 25 October 2008 в 23:23
поделиться

4 ответа

Ключ здесь должен запуститься путем записи API, к которому можно получить доступ от .NET, затем можно легко перенести вызовы к этому API в DLL, который выставляет классы, которые являются PowerShell cmdlets. Если Вы хотите, чтобы кто-то смог администрировать Ваш сервис удаленно затем, я думаю, вероятно, что лучшая вещь состоит в том, чтобы создать или веб-сервис или Сервис WCF, который делает это, и затем можно перенести это в PowerShell. Если Вы взглянете на codeplex, то Вы найдете, что некоторые примеры администрируют удаленные веб-услуги как GoGrid и Услуги передачи данных SQL, которые дадут Вам некоторый пример кода для запущения Вас.

1
ответ дан 3 November 2019 в 08:21
поделиться

Другой способ выставить внутреннее состояние службы Windows пришел на ум. Вы могли выставить информацию через WMI, который может быть использован от PowerShell или Ваших команд PowerShell.

Я не уверен, можете ли Вы сказать Вашему сервису выполнять действия через WMI, но Вы, по крайней мере, смогли бы вытащить состояние.

0
ответ дан 3 November 2019 в 08:21
поделиться

Решение состояло бы в том, чтобы Ваша служба Windows выставила интерфейс администрирования через WCF. Ваши команды PowerShell использовали бы этот сервис WCF, чтобы вытащить информацию и заставить службу Windows выполнить действия.

2
ответ дан 3 November 2019 в 08:21
поделиться

Третья альтернатива могла бы быть должна заставить службу Windows быть контент-провайдером PowerShell. Однако я никогда не делал тот сам, таким образом, я не уверен, подходят ли они для хостинга в службе Windows, так как услуга не могла бы работать все время.

0
ответ дан 3 November 2019 в 08:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: