Thursday, August 27, 2009

Запуск скрипта на Powershell через GET запрос

Как-то понадобилась нам хитрая штука: передавать через строку браузера некоторое количество параметров в скрипт на Powershell, потом получать от него Exit Code и его выводить.
Я долго читал про разные способы запуска PS из C#, изучил пространства имён
System.Collections.ObjectModel, System.Management.Automation и System.Management.Automation.Runspaces так, что они начали сниться мне по ночам, Firefox ломился от табов вроде такого и такого..
А потом меня, как водится, осенило. От самого скрипта мне не нужно было никакого вывода: только код завершения. Поэтому вполне можно было не заморачиваться с обработкой PS через C#, а сделать намного проще.
Сначала получаем параметры из GET-запроса в строке:
  1. string strParameters = "";
  2. foreach (string strParameter in Request.QueryString)
  3. {
  4. strParameters += " " + strParameter + ":" + Request.QueryString[strParameter];
  5. }
* This source code was highlighted with Source Code Highlighter.

А потом запускаем процесс со скриптом и параметрами. Что самое забавное, этот скрипт довольно универсален: имя скрипта тоже можно передавать в качестве параметра.
  1. Process Powershell = null;
  2. if (File.Exists(strScriptDirectory + strScriptName))
  3. {
  4. Powershell = Process.Start("powershell", @"-noexit -command " + strScriptDirectory + strScriptName + strParameters);
  5. while (!Powershell.WaitForExit(1000)) ;
  6. strExitCode = Powershell.ExitCode.ToString();
  7. }
* This source code was highlighted with Source Code Highlighter.

Как обычно, всё гениальное просто. Надеюсь, кому-нибудь это поможет:)

Wednesday, August 19, 2009

Панель редактирования страницы не отображается у одного из пользователей

Вчера я столкнулся со странным феноменом: у одной девушки, которая в данный момент учится наполнять узел своего подразделения контентом, не отобралажась панель редактирования страницы (page editing toolbar) для "Простой страницы" в библиотеке общих документов.
У меня (и под моей обычной учётной записью, и под системной) такой проблемы не было, и я целый вечер ломал голову над этой странностью. Странным было ещё и то, что пункта в меню, которое включало эту панель, у неё тоже не было: да и вообще в меню было только 2 пункта вместо десятка.

Сегодня у меня случилось просветление. Я открыл "Действия узла" -> Параметры узла -> Изменение параметров узла, там выбрал "Возможности узла". Так и есть! "Публикация Office Sharepoint Server" была отключена.

Как только я нажал на "Активировать" - всё стало правильно, и в меню "Действия узла" появились необходимые пункты: в том числе и "Показать меню изменения страницы".
Надеюсь, это кому-нибудь окажется полезным :)