Winrm ve Microsoft kullanarak sunucuları düzeltme ekleriyle ilgili sorunlar.


11

Windows 2003, 2008 ve 2008r2 sunucuları olan bir ağım var. "Microsoft.Update" com nesnelerini kullanarak yerel bir makine yama yazmak için yazdığım bir powershell komut dosyası var. ( Windows Update PowerShell Remoting'e benzer .) Betikim harika bir şekilde yerel olarak çalışıyor, ancak yönetmek için çok sayıda sunucum olduğu için işlevlerini uzaktan kullanmak istiyorum. Bu durumda düşer (çözülmeyen diğer gönderiye benzer şekilde).

Ancak başarısızlığı belirli bir sınıfta iki yönteme daraltabildim.

(New-Object -ComObject "Microsoft.Update.Session").CreateUpdateDownloader()
(New-Object -ComObject "Microsoft.Update.Session").CreateUpdateInstaller()

Bunları yerel olarak yönetici olarak bir powershell'de çalıştırırsanız, sorun yaşamazsınız. İnvoke-komutunu (veya enter-session veya winrs) kullanmaya çalışırsanız, aşağıdaki hatayı alırsınız. (Bu localhost ile test, ancak herhangi bir ana bilgisayar yapacak. Ben de credssp ve kerberos gibi farklı kimlik doğrulama yöntemleri ile denedim.);

PS C:\> Invoke-Command -ComputerName localhost -ScriptBlock { (New-Object -ComObject "microsoft.update.session").createUpdateDownloader()}
Exception calling "CreateUpdateDownloader" with "0" argument(s): "Access is denied. (Exception from HRESULT: 0x80070005
 (E_ACCESSDENIED))"
    + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
    + FullyQualifiedErrorId : ComMethodTargetInvocation

Bunu bloglarda bir hata olarak gördüm, ancak bu iddianın yedeği yok. İki geçici çözüm var ve ikisi de beni mutlu etmiyor.

  • Komutları sistem kullanıcısı olarak çalıştırmak için psexec kullanın. PSExec güvenilir olmadığı kanıtlanmış olarak kullanmamaya çalıştığım şey. Ayrıca saf bir powershell çözümü istiyorum.
  • Zamanlanmış bir görev oluşturun ve bunu komut dosyanızı sistem kullanıcısı olarak çalıştırmanızı söyleyin. ( onun posta yoluyla ) Bu sadece dağınık değil ama sonra güncelleme sonuçları olmayacak. Bir dosyaya giriş yapmam veya bir veritabanını ya da başka bir şeyi güncellemem gerekecek.

Bir çok insanın vurduğu bir sorun gibi göründüğü için bir ana bilgisayarda güncellemeleri çalıştırmak için diğer yollara açığım.

İletiyi açıklayan bazı dokümanlar buldum , ancak nedeni veya geçici çözümü bulamadım.

Dönüş Değeri Başarılı olursa S_OK değerini döndürür. Aksi takdirde, bir COM veya Windows hata kodu döndürür.

This method can also return the following error codes.
Return code   Description
E_INVALIDARGA parameter value is invalid. 
E_ACCESSDENIED    This method cannot be called from a remote computer.

Uzak bilgisayarda olduğumu nereden biliyor?


Bu bir WSUS örneğini oluşturmaktan ve bu rotayı kullanmaktan çok daha karmaşık görünüyor. O rotayı düşündün mü?
Driftpeasant

Bir sunucunun ne zaman satın alınacağını tam olarak kontrol edemez ve yalnızca WSUS ile gelmesini sağlayamazsınız. Güncellemelerin kendileri için bunu kullanıyoruz. Talep üzerine bir şey yapmak için tetikleyebilirseniz ilgilenirim.
reconbot

Server 2012'de PowerShell Web Access'i kullanırken de aynı sorunu yaşıyorum, aynı zamanda PowerShell uzaktan kumandasını kullanan perde arkasında. Aynı hata.
Peter Hahndorf

1
Olası cevap burada serverfault.com/a/474031/23300
Nic

@reconbot onun çok eski sorusunu biliyorum ama aynı zamanda sorunla karşı karşıyayım. Herhangi bir düzeltme veya alternatif yolunuz var mı?
Hesaplama Makinesi

Yanıtlar:



0

Böyle bir komutun uzak makinede ayrıcalıklarla çalıştırılması gerekir, bu nedenle uzak makinede bir etki alanı yönetici kullanıcısı veya yönetici olarak çalıştırılması gerekir.

Sizinki ilk durumsa, yardımım yok, ancak yalnızca yerel yöneticisiniz, uzak değil, get-credentialböyle kullanın .

$cred = get-credential

Invoke-Command -ComputerName localhost -credential $cred -scriptblock {}

Alternatif ve daha doğrudan bir form, Invoke-Commandkimlik bilgilerini isteyebilir:

Invoke-Command -scriptblock {$ENV:username} -Credential ""

Yönetici hesabının kimlik bilgileriyle çalışıyorum, hata "Bu yöntem uzak bir bilgisayardan çağrılamaz."
12:15 de reconbot

0

Yerel bir sanal hesap olarak çalışmak üzere uzak sunucuda bir JEA uç noktası ayarlayarak bu çalışmayı başardım.

Gönderen https://docs.microsoft.com/en-us/powershell/jea/session-configurations :

Yerel Sanal Hesap

Bu JEA uç noktasının desteklediği rollerin tümü yerel makineyi yönetmek için kullanılıyorsa ve komutları başarıyla çalıştırmak için bir yerel yönetici hesabı yeterliyse, JEA'yı yerel bir sanal hesap kullanacak şekilde yapılandırmanız gerekir. Sanal hesaplar, belirli bir kullanıcıya özgü olan ve yalnızca PowerShell oturumu boyunca devam eden geçici hesaplardır. Bir üye sunucuda veya iş istasyonunda, sanal hesaplar yerel bilgisayarın Administrators grubuna aittir ve çoğu sistem kaynağına erişebilir. Active Directory Etki Alanı Denetleyicisi'nde sanal hesaplar, etki alanının Domain Admins grubuna aittir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.