Tôi có một mạng với các máy chủ windows 2003, 2008 và 2008r2. Tôi có một tập lệnh powershell mà tôi đã viết để vá một máy cục bộ bằng cách sử dụng các đối tượng com "Microsoft.Update". (Tương tự như Windows Update PowerShell Remote .) Kịch bản của tôi hoạt động tuyệt vời cục bộ nhưng tôi muốn sử dụng các chức năng của nó từ xa vì tôi có số lượng máy chủ khá lớn để quản lý. Trong trường hợp đó, nó rơi xuống (tương tự như bài đăng khác, không được giải quyết).
Tuy nhiên tôi đã có thể thu hẹp sự thất bại xuống còn hai phương thức trên một lớp cụ thể.
(New-Object -ComObject "Microsoft.Update.Session").CreateUpdateDownloader()
(New-Object -ComObject "Microsoft.Update.Session").CreateUpdateInstaller()
Nếu bạn chạy những thứ này trong một quyền hạn cục bộ với tư cách là quản trị viên, bạn sẽ không gặp vấn đề gì. Nếu bạn cố gắng sử dụng lệnh invoke (hoặc enter-session hoặc winrs), bạn sẽ gặp phải lỗi sau. (Đây là thử nghiệm với localhost, nhưng bất kỳ máy chủ nào cũng sẽ làm được. Tôi cũng đã thử với các phương thức xác thực khác nhau như uy tín và kerberos.);
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
Tôi đã thấy điều này được đề cập trên blog là một lỗi, nhưng không có bản sao lưu cho khiếu nại đó. Hai cách giải quyết tồn tại và cả hai đều không làm tôi hạnh phúc.
- Sử dụng psexec để chạy các lệnh như người dùng hệ thống. PSExec là những gì tôi đang cố gắng không sử dụng vì nó đã được chứng minh là không đáng tin cậy. Tôi cũng muốn một giải pháp quyền lực thuần túy.
- Tạo một tác vụ theo lịch trình và nói rằng để chạy tập lệnh của bạn với tư cách là người dùng hệ thống. (thông qua bài đăng của anh ấy ) Điều này không chỉ lộn xộn mà sau đó tôi sẽ không có kết quả cập nhật. Tôi sẽ phải đăng nhập vào một tập tin hoặc cập nhật cơ sở dữ liệu hoặc một cái gì đó.
Tôi mở các cách khác để chạy cập nhật trên máy chủ từ xa vì đây dường như là vấn đề rất nhiều người đang gặp phải.
Tôi tìm thấy một số tài liệu giải thích thông điệp nhưng không phải là lý do hoặc cách giải quyết.
Trả về giá trị Trả về S_OK nếu thành công. Nếu không, trả về mã lỗi COM hoặc Windows.
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.
Làm thế nào để nó biết tôi trên một máy tính từ xa?