जवाबों:
विंडो 2003 R2 SP 2, Windows Server 2012 R2 पर निम्न कार्य करता है
wmimgmt.msc
) के गुण संवाद को लाएं । सुरक्षा टैब में, हाइलाइट Root/CIMV2
करें, सुरक्षा पर क्लिक करें; प्रदर्शन मॉनिटर उपयोगकर्ता जोड़ें और विकल्पों को सक्षम करें: Enable Account
औरRemote Enable
dcomcnfg
। घटक सेवाओं पर> कंप्यूटर> मेरा कंप्यूटर, गुण संवाद के COM सुरक्षा टैब में Access Permissions
और दोनों के लिए "सीमाएं संपादित करें" पर क्लिक करें Launch and Activation Permissions
। प्रदर्शन मॉनिटर उपयोगकर्ता जोड़ें और रिमोट एक्सेस, रिमोट लॉन्च और रिमोट सक्रियण की अनुमति दें।Remote Launch
और प्रदर्शन मॉनिटर उपयोगकर्ता समूह Remote Activation
को विशेषाधिकार और विशेषाधिकार दें ।टिप्पणियाँ:
Root
स्तर पर, और Advanced
विंडो के माध्यम से उप-नामस्थानों के लिए अनुमतियों की पुनरावृत्ति करेंSecurity
डिफ़ॉल्ट रूप से, केवल स्थानीय व्यवस्थापक समूह के पास WMI के लिए दूरस्थ अनुमति है। आपको WMI "दूरस्थ सक्षम" अनुमतियों को अनुकूलित करना होगा।
आपको "DCOM रिमोट एक्सेस परमिशन" और / या "DCOM रिमोट लॉन्च ऐंड ऐक्टिवेशन परमिशन" भी देना होगा, जो इस बात पर निर्भर करता है कि आप क्या करने की कोशिश कर रहे हैं। यह MSDN आलेख चरण-दर-चरण प्रक्रियाएँ देता है।
निम्नलिखित ने मेरे लिए 2012 r2 डोमेन वातावरण में काम किया, हालांकि मैं इसे केवल सर्वर के अनुसार करने में कामयाब रहा और पूरे डोमेन पर नहीं:
1) प्रदर्शन लॉग उपयोगकर्ता समूह में उपयोगकर्ता जोड़ें। 2) wmimgmt.msc चलाएं, राइट क्लिक करें "WMI नियंत्रण (LOCAL), गोटो सुरक्षा टैब और वांछित उपयोगकर्ता नाम (सामान्य CIMV2) पर उपयुक्त उपयोगकर्ता" सक्षम खाता "और" रिमोट सक्षम "को अनुदान दें।
अगर मैं इसे पूरे डोमेन के लिए प्राप्त करने का प्रबंधन करता हूं तो मैं वापस आऊंगा और अपडेट करूंगा।
चुने हुए उत्तर के आधार पर, मैंने WMI सुरक्षा सेट करने के लिए Microsoft से स्क्रिप्ट को संशोधित किया। मेरा परीक्षण उपयोगकर्ता एक गैर-प्रशासनिक डोमेन उपयोगकर्ता था जो इस मुद्दे से संबंधित कारणों के लिए स्थानीय प्रणाली पर "दूरस्थ प्रबंधन उपयोगकर्ता" का सदस्य था । अपने उपयोगकर्ता को EnableAccount, RemoteEnable, और ExecuteMethods को लक्ष्य नाम स्थान पर अनुमति देने के बाद, मैं WMI तक पहुँचने में सक्षम था।
इसलिए, मैंने अपने उपयोगकर्ता को प्रदर्शन मॉनिटर उपयोगकर्ताओं या वितरित COM उपयोगकर्ता स्थानीय समूहों में नहीं जोड़ा ।
स्क्रिप्ट के बारे में नोट्स की एक जोड़ी:
$OBJECT_INHERIT_ACE_FLAG
स्क्रिप्ट नीचे है। मैंने इसे सेट-WMINamespaceSsecurity.ps1 नाम दिया है
Param ([Parameter(Mandatory=$true,Position=0)] [string]$Namespace,
[Parameter(Mandatory=$true,Position=1)] [ValidateSet("Add","Remove")] [string]$Operation,
[Parameter(Mandatory=$true,Position=2)] [string] $Account,
[Parameter(Mandatory=$false,Position=3)] [ValidateSet("EnableAccount","ExecuteMethods","FullWrite","PartialWrite","ProviderWrite","RemoteEnable","ReadSecurity","WriteSecurity")] [string[]] $Permissions=$null,
[Parameter(Mandatory=$false)] [switch]$AllowInherit,
[Parameter(Mandatory=$false)] [switch]$Deny,
[Parameter(Mandatory=$false)] [string]$ComputerName=".",
[Parameter(Mandatory=$false)] [System.Management.Automation.PSCredential]$Credential=$null)
$OBJECT_INHERIT_ACE_FLAG = 0x1
$CONTAINER_INHERIT_ACE_FLAG = 0x2
$ACCESS_ALLOWED_ACE_TYPE = 0x0
$ACCESS_DENIED_ACE_TYPE = 0x1
$WBEM_ENABLE = 0x01
$WBEM_METHOD_EXECUTE = 0x02
$WBEM_FULL_WRITE_REP = 0x04
$WBEM_PARTIAL_WRITE_REP = 0x08
$WBEM_WRITE_PROVIDER = 0x10
$WBEM_REMOTE_ACCESS = 0x20
$WBEM_RIGHT_SUBSCRIBE = 0x40
$WBEM_RIGHT_PUBLISH = 0x80
$READ_CONTROL = 0x20000
$WRITE_DAC = 0x40000
$WBEM_S_SUBJECT_TO_SDS = 0x43003
$ErrorActionPreference = "Stop"
$InvokeParams=@{Namespace=$Namespace;Path="__systemsecurity=@";ComputerName=$ComputerName}
if ($PSBoundParameters.ContainsKey("Credential")) { $InvokeParams+= @{Credential=$Credential}}
$output = Invoke-WmiMethod @InvokeParams -Name "GetSecurityDescriptor"
if ($output.ReturnValue -ne 0) { throw "GetSecurityDescriptor failed: $($output.ReturnValue)" }
$ACL = $output.Descriptor
if ($Account.Contains('\')) {
$Domain=$Account.Split('\')[0]
if (($Domain -eq ".") -or ($Domain -eq "BUILTIN")) { $Domain = $ComputerName }
$AccountName=$Account.Split('\')[1]
}
elseif ($Account.Contains('@')) {
$Somain=$Account.Split('@')[1].Split('.')[0]
$AccountName=$Account.Split('@')[0]
}
else {
$Domain = $ComputerName
$AccountName = $Account
}
$GetParams = @{Class="Win32_Account" ;Filter="Domain='$Domain' and Name='$AccountName'"}
$Win32Account = Get-WmiObject @GetParams
if ($Win32Account -eq $null) { throw "Account was not found: $Account" }
# Add Operation
if ($Operation -eq "Add") {
if ($Permissions -eq $null) { throw "Permissions must be specified for an add operation" }
# Construct AccessMask
$AccessMask=0
$WBEM_RIGHTS_FLAGS=$WBEM_ENABLE,$WBEM_METHOD_EXECUTE,$WBEM_FULL_WRITE_REP,$WBEM_PARTIAL_WRITE_REP,$WBEM_WRITE_PROVIDER,$WBEM_REMOTE_ACCESS,$READ_CONTROL,$WRITE_DAC
$WBEM_RIGHTS_STRINGS="EnableAccount","ExecuteMethods","FullWrite","PartialWrite","ProviderWrite","RemoteEnable","ReadSecurity","WriteSecurity"
$PermissionTable=@{}
for ($i=0; $i -lt $WBEM_RIGHTS_FLAGS.Count; $i++) { $PermissionTable.Add($WBEM_RIGHTS_STRINGS[$i].ToLower(), $WBEM_RIGHTS_FLAGS[$i]) }
foreach ($Permission in $Permissions) { $AccessMask+=$PermissionTable[$Permission.ToLower()] }
$ACE=(New-Object System.Management.ManagementClass("Win32_Ace")).CreateInstance()
$ACE.AccessMask=$AccessMask
# Do not use $OBJECT_INHERIT_ACE_FLAG. There are no leaf objects here.
if ($AllowInherit.IsPresent) { $ACE.AceFlags=$CONTAINER_INHERIT_ACE_FLAG }
else { $ACE.AceFlags=0 }
$Trustee=(New-Object System.Management.ManagementClass("Win32_Trustee")).CreateInstance()
$Trustee.SidString = $Win32Account.SID
$ACE.Trustee=$Trustee
if ($Deny.IsPresent) { $ACE.AceType = $ACCESS_DENIED_ACE_TYPE } else { $ACE.AceType = $ACCESS_ALLOWED_ACE_TYPE }
$ACL.DACL+=$ACE
}
#Remove Operation
else {
if ($Permissions -ne $null) { Write-Warning "Permissions are ignored for a remove operation" }
[System.Management.ManagementBaseObject[]]$newDACL = @()
foreach ($ACE in $ACL.DACL) {
if ($ACE.Trustee.SidString -ne $Win32Account.SID) { $newDACL+=$ACE }
}
$ACL.DACL = $newDACL
}
$SetParams=@{Name="SetSecurityDescriptor"; ArgumentList=$ACL}+$InvokeParams
$output = Invoke-WmiMethod @SetParams
if ($output.ReturnValue -ne 0) { throw "SetSecurityDescriptor failed: $($output.ReturnValue)" }
हमने PRTG के लिए ऐसा किया: हमने एक नया डोमेन उपयोगकर्ता बनाया: अपने उपयोगकर्ता को समूह "परफॉर्मेन्स लॉग यूज़र्स" में डालने के लिए एक GPO Dit बनाया और WMI नियंत्रण में इस उपयोगकर्ता को जोड़ने के लिए एक पॉवरशेल स्क्रिप्ट का उपयोग किया। करने के लिए धन्यवाद: