Невозможно получить групповую политику для компьютера удаленно, не выполнив вход хотя бы один раз вручную - PullRequest
2 голосов
/ 08 мая 2019

Я написал настольное приложение на 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, и это не имело никакого значения.

Любые подсказки?

1 Ответ

3 голосов
/ 08 мая 2019

Из документации для gpresult :

Because you can apply overlapping policy settings to any computer or user, the Group Policy feature generates a resulting set of policy settings when the user logs on. gpresult displays the resulting set of policy settings that were enforced on the computer for the specified user when the user logged on.

Поскольку вы говорите о применении политики на серверах, которая, как ожидается, обычно не имеет пользователявошли в систему, возможно, вы можете попробовать добавить параметр /scope computer, чтобы получить только политики компьютера, которые всегда должны быть доступны.

...