настроить защитника с помощью configfile - PullRequest
0 голосов
/ 04 мая 2020

Я хочу настроить Защитника Windows с помощью Powershell. Поэтому у меня есть файл (.txt) с нужной конфигурацией.

ScanScheduleDay = 7

DisableCatchupFullScan = True

DisableRealtimeMonitoring = False

Этот скрипт будет запускаться каждые X часов с помощью Taskscheduler. Затем он сканирует текущую конфигурацию и проверяет, отличается ли она от требуемой конфигурации в файле .txt. Если есть изменения, я хочу делать вещи sepcifi c, поэтому мне нужно знать, что изменилось.

Я не могу понять, как отделить имя конфигурации и значение от моего файла .txt.

if (!($config -eq $value))
{
Set-MpPreference -$config $value
}

, поэтому $ config должен быть первым элементом в .txt (например, ScanScheduleDay), а $ value должен быть значением после "=" (например, 7)

Ответы [ 2 ]

1 голос
/ 04 мая 2020

Самый простой способ сделать это - прочитать текстовый файл конфигурации и преобразовать его в хеш-таблицу. Затем сравните текущую настройку с желаемой:

# read the desired config text file and convert to Hashtable
$txt = Get-Content -Path 'D:\DefenderConfig.txt' -Raw | ConvertFrom-StringData

# get the current configuration
$currentConfig = Get-MpPreference

# loop through the settings from the text file and report the differences
$txt.GetEnumerator() | ForEach-Object {
    $currentValue = $currentConfig.$($_.Name)
    if ($_.Value -ne $currentValue) {
        # there is a difference found. 
        # for demo, just show on screen
        Write-Host "Current value for '$($_.Name)': $currentValue - Desired: $($_.Value)"
    }
}

Вывод:

Current value for 'DisableCatchupFullScan': False - Desired: True
Current value for 'ScanScheduleDay': 0 - Desired: 7
0 голосов
/ 04 мая 2020

Теперь, когда у меня есть сортировка, я пытаюсь сбросить любые настройки, которые не соответствуют моему .txt файлу.

У меня есть имя настройки (например, ScanScheduleDay) в переменной $conname

Также желаемое значение находится в $currentValue

я получаю ошибку:

Set-MpPreference : A positional parameter cannot be found that accepts argument '-ScanScheduleDay'. At C:\temp\defendertest\Defendersettings.ps1:120 char:1 + Set-MpPreference "-$conname" $currentValue + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidArgument: (:) [Set-MpPreference], ParameterBindingException + FullyQualifiedErrorId : PositionalParameterNotFound,Set-MpPreference

Не могу ли я просто использовать переменную в качестве параметра?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...