Я хочу иметь возможность проверить расписание обновлений CCM, как показано на вкладке «Обновления Configuration Manager». Я искал в Google и не смог найти на этот вопрос однозначного ответа.
Я попытался создать COM-объект с помощью UDA.CCMUpdatesDeployment. Это позволяет мне успешно установить повторяющееся расписание с помощью метода SetUserDefinedSchedule. Если я попытаюсь использовать GetUserDefinedSchedule, я получу только исходные значения переменных.
PS> $UD = New-Object -com "UDA.CCMUpdatesDeployment"
PS> $A= 101
PS> $B= 102
PS> $UD.GetUserDefinedSchedule([ref]$A, [ref]$B)
PS> $A
101
PS> $B
102
PS> $UD.GetUserDefinedSchedule
MemberType : Method
OverloadDefinitions : {void GetUserDefinedSchedule (Variant, Variant)}
TypeNameOfValue : System.Management.Automation.PSMethod
Value : void GetUserDefinedSchedule (Variant, Variant)
Name : GetUserDefinedSchedule
IsInstance : True
Я действительно хочу иметь возможность делать это удаленно для списка серверов в текстовом файле, но прямо сейчас подойдет любой способ.
Можете ли вы попробовать? Обратите внимание на то, как параметры передаются в Powershell.
$A = $null
$B = $null
$UD.GetUserDefinedSchedule ([ref]$A) ([ref]$B)
write-host "Recurrence: $A"
write-host "Hour: $B"
Так что я новичок в Powershell.
Мои переменные должны были быть объявлены:
PS> [ref]$A = $Null
PS> [ref]$B = $Null
Тогда команду следовало запустить как:
PS> $UD.GetUserDefinedSchedule($A,$B)
Результат для каждого воскресенья в 3 часа ночи:
PS> $A
Value
-----
1
PS> $B
Value
-----
3
Первая переменная - это указатель различных опций, доступных в раскрывающемся списке. Вторая переменная содержит время в 24-часовом формате. Итак, 15:00 даст значение 15.
Я получил ответ, просматривая некоторый код PowerShell. Я думал о передаче по ссылке как о функции C для обновления той же переменной. Я до сих пор не понимаю концепцию Powershell. Если я обновляю CCM и запускаю команду с теми же переменными, значение не меняется.