WSUS Command для отклонения обновлений - PullRequest
0 голосов
/ 03 января 2019

В настоящее время я пытаюсь заставить мой WSUS отклонять обновления через командную строку, потому что он перегружен, я не могу получить доступ к оснастке управления. Это код, который я нашел в сети, но единственная проблема, с которой я сталкиваюсь, состоит в том, что мой сервер имеетчерты в имени и испортить код.Я попытался поместить кавычки вокруг имени, и оно по-прежнему выводит недопустимый символ после ":" из 3-й строки

РЕДАКТИРОВАТЬ: новая ошибка Неверный URI: не удалось проанализировать имя хоста.в Microsoft.UpdateServices.Administration.AdminProxy.CreateUpdateServer (Object [] args) в Microsoft.UpdateServices.Administration.AdminProxy.GetupdateServer (String имя_сервера, логическое значение useSecureConnection, Int32 portnumber) в объекте Callsite.Tejects, объект Closes, объектный объект, объект CallSite.Target (, Объект)

#Change server name and port number and $True if it is on SSL

$Computer = $env:common-n-sccm2012
$Domain = $env:airplane.black.low.com
$FQDN = "$Computer" + "." + "$Domain"
[String]$updateServer1 = $FQDN
[Boolean]$useSecureConnection = $False
[Int32]$portNumber = 8530

# Load .NET assembly

[void][reflection.assembly]::LoadWithPartialName("Microsoft.UpdateServices.Administration")

$count = 0

# Connect to WSUS Server

$updateServer = [Microsoft.UpdateServices.Administration.AdminProxy]::getUpdateServer($updateServer1,$useSecureConnection,$portNumber)

write-host "<<<Connected sucessfully >>>" -foregroundcolor "yellow"

$updatescope = New-Object Microsoft.UpdateServices.Administration.UpdateScope

$u=$updateServer.GetUpdates($updatescope )

foreach ($u1 in $u )

{

if ($u1.IsSuperseded -eq 'True')

{

write-host Decline Update : $u1.Title

$u1.Decline()

$count=$count + 1

}

}

write-host Total Declined Updates: $count

trap

{

write-host "Error Occurred"

write-host "Exception Message: "

write-host $_.Exception.Message

write-host $_.Exception.StackTrace

exit

}

# EOF

1 Ответ

0 голосов
/ 03 января 2019

Я думаю, вы имеете в виду ошибку, всплывающую в этой строке:

$Computer = $env:common-n-sccm2012 

потому что вы пытаетесь получить переменную окружения с тире в ее имени. Вы можете попробовать отформатировать его как:

$Computer = ${env:common-n-sccm2012}

ОДНАКО

Я думаю, что вы «окружаете» жестко закодированные значения, и это является реальной проблемой.

Трудно поверить, что у вас действительно есть переменные окружения с такими именами, как common-n-sccm2012 и airplane.black.low.com.

Чтобы получить фактическое полное доменное имя с компьютера, на котором вы находитесь, вы можете сделать это:

$Computer = $env:COMPUTERNAME          # --> "common-n-sccm2012"
$Domain   = $env:USERDNSDOMAIN         # --> "airplane.black.low.com"
$FQDN = "$Computer" + "." + "$Domain"  # --> "common-n-sccm2012.airplane.black.low.com"

(или в одну строку: $FQDN = "$env:COMPUTERNAME.$env:USERDNSDOMAIN")

Вы также можете получить это полное доменное имя с помощью WMI:

$FQDN = (Get-WmiObject win32_computersystem).DNSHostName + "." + (Get-WmiObject win32_computersystem).Domain

Вы можете прочитать о переменных среды здесь

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