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?