Soru PowerShell aracılığıyla WSUS'yi otomatikleştirme


Hızlı bir şekilde yönetme niyetiyle bir senaryo yazdım. WSUS süreç ve ben kodlanmış bir kaç şey var, ama PowerShell ile almak yerine. Özellikle, WsusUpdate Onaylamak için 'Hedef' grupları.

Şu anda böyle bir şey yapıyorum:

#Select Target Group for Update Approval:

$TargetComputerGroups = "All Computers", "Unassigned Computers", "Clients", "Servers", "Test", "View Templates"

$UserPrompt = @"

Please select a Computer Group from the below options:

1) All Computers (Selects all of the below)
2) Unassigned Computers
3) Clients
4) Servers
5) Test
6) View Templates

Enter selection
"@

###Record user selection to varirable
$TargetComputerGroupTemp = Read-Host -Prompt $UserPrompt

###Convert their choice to the correct 0-index array value.
$TargetComputerIndex = $TargetComputerGroupTemp -1

$ComputerTarget = $TargetComputerGroups[$TargetComputerIndex]

Bir dizi uygun hedef grup yaratacak bir 'get-target' komutu var mı? Bu şekilde el ilanı bildirimini kaldırabilirim $TargetComputerGroups.

Ayrıca, $UserPrompt Daha iyi bir kod seti (tekrar manuel bildirimlerden kaçınmak). Sanki bir şey gibi düşünüyorum '$i for $i in $TargetComputerGroups' write-host 'Press 1 for i'

Bu söylediklerim, bu konuda çok yeniyim, bu yüzden bunu yapmanın en iyi yolunu bilmiyorum (ideal seçimini bu ifadedeki doğru gruba eşleme!).


7
2017-09-02 16:41


Menşei




Cevaplar:


PowerShell ile yapabilirsiniz, ancak WSUS yönetim konsolunun da makineye yüklenmiş olması gerekir.

Daha sonra aşağıdakileri yapabilirsiniz.

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

$wsus = [Microsoft.UpdateServices.Administration.AdminProxy]::getUpdateServer(“wsus_server”,$False)

$wsus

Daha sonra, hedef grupların listesini alabilirsiniz.

$wsus.GetComputerTargetGroups()

Veya ile bir grup seçin

$targetgroup = $wsus.GetComputerTargetGroups() | ? {$_.Name -eq "some target name"}

İçinde daha fazla bilgi var WSUS'ta Temel Yönetim Görevlerini Gerçekleştirmek için PowerShell'i kullanınAncak yukarıdaki bilgiler size gruplar hakkında bilgi verecektir.


10
2017-09-02 16:57



Oooph. Daha fazla güç vermeyi denediğimde daha çok hayal kırıklığına uğruyorum = / Günün sonunda başka bir şey duymazsam bunu kabul edeceğim. Bağlantı harika görünüyor ve yardımlarınız için teşekkürler! - Abraxas
Kendinize verin :) Kendimi çok fazla kullanıyorum. Genellikle bir yerel powershell komutu olmasa bile, birisi bunun için bir modül yazmıştır. - Drifter104
Evet, sadece UpdateServices Modülünün Get-TargetGroups'a veya bunun gibi bir şeye sahip olmasını istedim çünkü bunun içinde 3 tane başka komut üzerinde bir özellik lol = / Ben de bu powershell şeyleri için yeni ve '[void] [yansıma. assembly] :: LoadWithPartialName ("Microsoft.UpdateServices.Administration") 'benim için hala çok garip. Her iki şekilde, teşekkürler! - Abraxas


Drifter104'ün dediği gibi, bir sonraki Windows Server sürümüne dahil edilecek olsa da, WSUS'u yönetmek için henüz bir PowerShell modülü mevcut değildir (https://technet.microsoft.com/en-us/library/hh826166.aspx); bu arada, WSUS'yi yönetmek için .NET derlemesini içe aktarmanız ve bunu kullanmanız gerekir; PowerShell'deki en büyük özelliklerden biri, belirli bir görevi yerine getirmek için yerel cmdlet'leri içermese bile, tam .NET ortamına erişebilmenizdir, ve aslında bunu yapabileceğiniz her şeyi yapabilirsiniz. .NET uygulaması.

Komut dosyası bölümü hakkında: WSUS gruplarınızın adlarını bir dizide aldığınızda, kullanıcılarınıza gösterilen listeyi dinamik olarak oluşturmak oldukça kolaydır; sadece dizi boyunca döngü ve seçim numarası için bir dizin kullanın:

Write-Host Please select a Computer Group from the below options:

$i = 1

foreach($g in $TargetComputerGroups)
{
    Write-Host Press $i for $g
    $i++
}

$sel = Read-Host -Prompt "Enter selection: "

4
2017-09-02 17:39



Oh bu tekme. Teşekkürler! : D - Abraxas