Я написал настольное приложение на C # с использованием System.Management.Automation, которое удаленно подключается к компьютерам в нашей сети и выполняет диагностику, чтобы убедиться, что все они настроены в соответствии с политиками нашей организации.
PSCredential Credentials = new PSCredential(Username, Password);
WSManConnectionInfo ThisConnection = new WSManConnectionInfo(false, ThisSystem.IpName, 5985, "/wsman",
"http://schemas.microsoft.com/powershell/Microsoft.PowerShell", Credentials);
using (Runspace ThisRunspace = RunspaceFactory.CreateRunspace(ThisConnection))
{
ThisRunspace.Open();
using (PowerShell ThisShell = PowerShell.Create())
{
ThisShell.Runspace = ThisRunspace;
Чтобы получить баннер, который находится в групповой политике, он выполняет следующий код для выполнения команды powershell
ThisShell.Commands.Clear();
ThisShell.AddScript("echo N | gpupdate /force");
ThisShell.AddScript("gpresult /h c:\\Windows\\Temp\\gpdata.html /F");
ThisShell.AddScript("type c:\\Windows\\Temp\\gpdata.html");
List<String> GroupPolicy = ThisShell.Invoke().Select(x => x.ToString()).ToList();
Что должно создать этот HTML-файл с данными групповой политики для этого компьютера. И это происходит до тех пор, пока я вручную вошел на эту машину с теми же учетными данными. Если у меня нет, я ничего не получаю. Я так же запускаю другие команды powershell и получаю результаты просто отлично, но по какой-то причине эта команда для получения групповой политики будет работать только для компьютеров, на которых я вошел в систему вручную (с помощью удаленного рабочего стола) хотя бы один раз, и с тысячами серверы для проверки, это не вариант.
Я подумал, что, возможно, вход в систему вручную создал домашнюю папку для учетной записи администратора, которую я использую, но это не может быть, потому что я получаю результаты других команд powershell, которые я передал в файлы. Я подумал, что, возможно, вход в систему вручную обновил групповую политику на этом компьютере, но этого также не может быть, я думаю, потому что я добавил gpupdate /force
, и это не имело никакого значения.
Любые подсказки?