Я запускаю приведенный ниже код, как указано в:
https://i.stack.imgur.com/fltkm.png
Я считаю, что весь необходимый код показан ниже, но в основном, когда вызывается GetPSResults, передается объект PSCredential. Проблема возникает, когда я пытаюсь выполнить ps.Invoke().
Я запускаю это на локальном хосте, запуская сценарий Powershell как «общий» пользователь, который был создан для использования в этой программе (эти учетные данные установлены в объекте PSCredential). Этому пользователю также были предоставлены права администратора на моем локальном хосте. Этот пользователь пытается получить журналы с удаленного сервера. Учитывая ошибку, я предполагаю, что это какая-то проблема с разрешениями, но я не очень хорошо знаком с этой стороной вещей.
protected override void OnStart(string[] args)
{
GetLogs newGetLogs = new GetLogs();
PSCredential credential = new PSCredential(@"MYDOMAIN\MYUSERID", newGetLogs.GetSecurePassword("TESTPASSWORD"));
Collection<PSObject> returnValues = GetPSResults(credential);
}
public static Collection<PSObject> GetPSResults(PSCredential credential, bool throwErrors = true)
{
Collection<PSObject> toReturn = new Collection<PSObject>();
WSManConnectionInfo connectionInfo = new WSManConnectionInfo();
connectionInfo.Credential = credential;
using (Runspace runspace = RunspaceFactory.CreateRunspace(connectionInfo))
{
runspace.Open();
using (PowerShell ps = PowerShell.Create())
{
ps.Runspace = runspace;
ps.AddCommand("get-eventlog");
ps.AddParameter("ComputerName", "MYSERVERNAME");
ps.AddParameter("LogName", "MYLOGNAME");
ps.AddParameter("EntryType", "Error");
ps.AddParameter("Newest", 20);
toReturn = ps.Invoke();
if (throwErrors)
{
if (ps.HadErrors)
{
throw ps.Streams.Error.ElementAt(0).Exception;
}
}
}
runspace.Close();
}
return toReturn;
}
public SecureString GetSecurePassword(string password)
{
var securePassword = new SecureString();
foreach (var c in password)
{
securePassword.AppendChar(c);
}
return securePassword;
}
Я получаю эту ошибку:
System.Management.Automation.RemoteException: «Попытка выполнить несанкционированную операцию».
В Visual Studio я могу углубиться в ошибку, чтобы увидеть изображение ниже. Я вижу, что в этих сообщениях есть несколько упоминаний реестра ... это признак какой-то проблемы с разрешениями?
Я видел некоторые упоминания о WinRM, но я не совсем понимаю, какие обновления мне нужно будет сделать... либо в коде, либо в моих учетных записях пользователей.
EventLog.GetEventLogs
- person Gabriel Luci   schedule 16.11.2018