2012-07-06 25 views
7

Tôi đã được giao nhiệm vụ viết kịch bản Powershell để thiết lập máy chủ từ đầu để chạy một trong các dịch vụ của chúng tôi như một phần của ứng dụng web và một trong các bước cần thiết để thiết lập máy chủ này up đang thay đổi cấu hình DCOM cho dịch vụ đã cài đặt, cụ thể là thêm tài khoản vào Quyền "Khởi chạy và Kích hoạt"/"Truy cập" và cũng có thể đặt quyền cho các tài khoản này khi chúng đã được thêm.Thay đổi cài đặt bảo mật cấu hình DCOM bằng Powershell

Có cách nào để thực hiện điều này bằng Powershell không? Tôi đã không thể tìm ra phương pháp cụ thể để làm những gì tôi muốn đạt được để giúp đỡ bất kỳ sự trợ giúp nào tuyệt vời.

Trả lời

12

Có vẻ như bạn sẽ làm điều đó bằng WMI.

Nhận một thể hiện của: Win32_DCOMApplicationSetting như thế này:

$dcom = Get-WMIObject -Class Win32_DCOMApplicationSetting -Filter 'Description="Something"' 

Bây giờ bạn có quyền truy cập vào các SetAccessSecurityDescriptorSetLaunchSecurityDescriptor phương pháp.

Từ: http://msdn.microsoft.com/en-us/library/windows/desktop/aa384905(v=vs.85).aspx ứng dụng

DCOM

trường ứng dụng DCOM có một vài mô tả bảo mật. Bắt đầu từ với Windows Vista, sử dụng các phương thức của lớp Win32_DCOMApplicationSetting để nhận hoặc thay đổi các mô tả bảo mật khác nhau. Bảo mật các bộ mô tả được trả về dưới dạng các thể hiện của lớp Win32_SecurityDescriptor .

Để nhận hoặc thay đổi quyền cấu hình, hãy gọi phương thức GetConfigurationSecurityDescriptor hoặc SetConfigurationSecurityDescriptor.

Để nhận hoặc thay đổi quyền truy cập, hãy gọi phương thức GetAccessSecurityDescriptor hoặc SetAccessSecurityDescriptor.

Để nhận hoặc thay đổi quyền khởi động và kích hoạt, hãy gọi phương thức GetLaunchSecurityDescriptor hoặc SetLaunchSecurityDescriptor.

Windows Server 2003, Windows XP, Windows 2000, Windows NT 4.0 và Windows Me/98/95: Win32_DCOMỨng dụngCài đặt bảo mật các phương pháp mô tả không khả dụng.

Ngoài ra còn có một công cụ gọi là DCOMPERM trong đó mã nguồn có sẵn trong Windows SDK: http://www.microsoft.com/en-us/download/details.aspx?id=8279

Bạn có thể tìm thấy phiên bản biên soạn xung quanh trực tuyến nếu bạn tìm kiếm DCOMPERM biên soạn.

Dưới đây là các tùy chọn dòng lệnh:

Syntax: dcomperm <option> [...] 
Options: 

Modify or list the machine access permission list 
-ma <"set" or "remove"> <Principal Name> ["permit" or "deny"] ["level:l,r"] 
-ma list 

Modify or list the machine launch permission list 
-ml <"set" or "remove"> <Principal Name> ["permit" or "deny"] ["level:l,r,ll,la,rl,ra"] 
-ml list 

Modify or list the default access permission list 
-da <"set" or "remove"> <Principal Name> ["permit" or "deny"] ["level:l,r"] 
-da list 

Modify or list the default launch permission list 
-dl <"set" or "remove"> <Principal Name> ["permit" or "deny"] ["level:l,r,ll,la,rl,ra"] 
-dl list 

Modify or list the access permission list for a specific AppID 
-aa <AppID> <"set" or "remove"> <Principal Name> ["permit" or "deny"] ["level:l,r"] 
-aa <AppID> default 
-aa <AppID> list 

Modify or list the launch permission list for a specific AppID 
-al <AppID> <"set" or "remove"> <Principal Name> ["permit" or "deny"] ["level:l,r,ll,la,rl,ra"] 
-al <AppID> default 
-al <AppID> list 

level: 
    ll - local launch (only applies to {ml, dl, al} options) 
    rl - remote launch (only applies to {ml, dl, al} options) 
    la - local activate (only applies to {ml, dl, al} options) 
    ra - remote activate (only applies to {ml, dl, al} options) 
    l - local (local access - means launch and activate when used with {ml, dl, al} options) 
    r - remote (remote access - means launch and activate when used with {ml, dl, al} options) 
+0

Cảm ơn Andy, điều đó đã giúp ích rất nhiều! Cuối cùng tôi đã sử dụng một hỗn hợp của cả hai phương pháp. Tôi đã sử dụng Win32_DCOMApplicationSetting để lấy các id ứng dụng, và sau đó sử dụng DComPerm để thêm các quyền cần thiết. Một cái gì đó tôi thấy một chút kỳ lạ là CMD chạy DcomPerm với rất ít vấn đề hơn Powershell, vì vậy để đạt được những gì tôi cần, tôi đã viết một tập tin thực thi mà một số biến đã được thông qua, và được gọi là từ Powershell. – Vermin

+0

@Việc đoán của tôi sẽ là vấn đề bạn gặp phải với PowerShell có lẽ là cú pháp phân tích cú pháp dòng lệnh/cú pháp. Có thể đăng lỗi bạn nhận được? –

7

Tôi có cùng một câu hỏi như OP. Câu trả lời của Andy được đăng rất hữu ích và giúp tôi nửa chừng. Sau đó tôi tìm thấy Set-DCOMLaunchPermissions được viết bởi ai đó để giúp họ triển khai SharePoint.

Tôi đã điều chỉnh chức năng của mình cho mục đích của tôi và đưa ra giải pháp đặt quyền tôi cần.

$user = "sql2012agent" 
$domain = "MYDOMAIN" 
$appdesc = "Microsoft SQL Server Integration Services 11.0" 
$app = get-wmiobject -query ('SELECT * FROM Win32_DCOMApplicationSetting WHERE Description = "' + $appdesc + '"') -enableallprivileges 
#$appid = "{83B33982-693D-4824-B42E-7196AE61BB05}" 
#$app = get-wmiobject -query ('SELECT * FROM Win32_DCOMApplicationSetting WHERE AppId = "' + $appid + '"') -enableallprivileges 
$sdRes = $app.GetLaunchSecurityDescriptor() 
$sd = $sdRes.Descriptor 
$trustee = ([wmiclass] 'Win32_Trustee').CreateInstance() 
$trustee.Domain = $domain 
$trustee.Name = $user 
$fullControl = 31 
$localLaunchActivate = 11 
$ace = ([wmiclass] 'Win32_ACE').CreateInstance() 
$ace.AccessMask = $localLaunchActivate 
$ace.AceFlags = 0 
$ace.AceType = 0 
$ace.Trustee = $trustee 
[System.Management.ManagementBaseObject[]] $newDACL = $sd.DACL + @($ace) 
$sd.DACL = $newDACL 
$app.SetLaunchSecurityDescriptor($sd) 
+0

Tôi đang cố gắng sử dụng tập lệnh PS được đăng bởi @Elijah W. Gagne ở trên để định cấu hình DCOM và nhận được lỗi "Thuộc tính 'DACL' không thể tìm thấy trên đối tượng này. Xác minh rằng thuộc tính tồn tại và có thể được đặt". Lỗi là cho dòng "$ sd.DACL = $ newDACL". Tôi không phải là rất thạo trong việc sử dụng PS. Bất cứ ai có thể cho tôi biết tôi cần phải làm gì để thực hiện công việc đó. Cảm ơn nhiều! – RGuggisberg

+0

Tôi sẽ chạy mọi thứ cho đến dòng 4. Sau đó, đầu ra biến $ app và xác nhận nó không trống (null). Nếu có, bạn có thể phải điều chỉnh mệnh đề WHERE của bạn trong dòng 4. –

+0

Có, tôi đã phải thay đổi của tôi khi tôi đang sử dụng phiên bản 12.0 không 11.0 và tôi thấy ứng dụng $ là rỗng. Nhưng sau khi thay đổi $ appdesc để phù hợp với tôi, kịch bản làm việc trở nên quyến rũ. –

Các vấn đề liên quan