У меня есть сайт, на котором я пытаюсь запустить vbscript из пространства выполнения powershell (звучит странно, но это был самый простой способ, как я думал). Моя проблема в том, что скрипт powershell выполняется как учетная запись локального компьютера, а не как пользователь, который его запускает. Любая помощь по исправлению этого будет принята с благодарностью. Я попытался с помощью контекста олицетворения, найденного в http://support.microsoft.com/kb/306158, но безуспешно. Заранее спасибо.
protected void btnRemMaint_Click(object sender, EventArgs e)
{
txtOutput.Text = "";
txtOutput.Text = "Remove Maintenance Results";
txtOutput.Text += Environment.NewLine;
string servers;
servers = txtServers.Text.Replace(Environment.NewLine, ",");
while (servers[servers.Length - 1].ToString() == ",")
servers = servers.Substring(0, servers.Length - 1);
System.Security.Principal.WindowsImpersonationContext impersonationContext;
impersonationContext =
((System.Security.Principal.WindowsIdentity)User.Identity).Impersonate();
//Insert your code that runs under the security context of the authenticating user here.
string script = "C:\\inetpub\\wwwroot\\VRS\\Admins\\PSScripts\\AMMaintMode.vbs";
string mode = "/maint:0";
string serv = "/server:" + servers;
string ccserv = "/ccserver:calntmgt501";
using (
RunspacePool runspace = RunspaceFactory.CreateRunspacePool())
{
// open it
runspace.Open();
// create a pipeline and feed it the script text
PowerShell pipeline = PowerShell.Create();
pipeline.RunspacePool = runspace;
pipeline.AddCommand("cscript");
pipeline.AddArgument(script);
pipeline.AddArgument(mode);
pipeline.AddArgument(serv);
pipeline.AddArgument(ccserv);
// execute the script
IAsyncResult pipeResults = pipeline.BeginInvoke();
PSDataCollection<PSObject> pipeOutput = pipeline.EndInvoke(pipeResults);
//pipeline.Invoke();
for (int i = 0; i < pipeOutput.Count; i++)
{
txtOutput.Text += pipeOutput[i].BaseObject.ToString();
txtOutput.Text += Environment.NewLine;
}
runspace.Close();
}
impersonationContext.Undo();
txtServers.Text = "";
}
выходные результаты выглядят следующим образом:
Microsoft (R) Windows Script Host версии 5.8 Copyright (C) Microsoft
Корпорация. Все права защищены.
CLI режима обслуживания AppManager V2.1
Подключение к Центру управления ... Сервер calntmgt501 \ NQCCDB через Windows
Аутентификация
* Не удалось подключиться к серверу. Проверьте учетные данные. Ошибка:
* Ошибка входа для пользователя 'BLACKROCK \ USPMVVMT001 $'.