Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Skript může použít výchozí nastavení ověřování a zosobnění rozhraní WMI. Skript ale může potřebovat připojení s větším zabezpečením nebo se může připojit k oboru názvů, který vyžaduje šifrované připojení. Další informace naleznete v tématu Nastavení popisovačů zabezpečení oboru názvů a Vyžadování šifrovaného připojení k oboru názvů.
V nejjednodušším případě může skript použít výchozí nastavení ověřování a zosobnění. WMI se obvykle spouští v hostitelském procesu sdílené služby a sdílí stejné ověřování jako ostatní procesy v tomto procesu. Pokud chcete spustit proces rozhraní WMI s jinou úrovní ověřování, spusťte rozhraní WMI s příkazem winmgmt s přepínačem /standalonehost a obecně nastavte úroveň ověřování pro rozhraní WMI. Další informace naleznete v části Údržba zabezpečení WMI.
Následující skript používá výchozí nastavení pro zosobnění a úrovně ověřování.
strComputer = "."
Set objServices = GetObject("winmgmts:\\" _
& strComputer & "\root\CIMV2")
set objProcessSet = objServices.ExecQuery _
("SELECT Name FROM Win32_Process",,48)
For Each Process in objProcessSet
WScript.Echo Process.Name
Next
Můžete také použít moniker ve volání GetObjecta nastavit výchozí nastavení zabezpečení, jako v následujícím příkladu.
strComputer = "."
Set objServices = GetObject( _
"winmgmts:{impersonationLevel=impersonate," _
& "authenticationLevel=pktPrivacy}!root/cimv2")
set objProcessSet = objServices.ExecQuery _
("SELECT Name FROM Win32_Process",,48)
For Each Process in objProcessSet
WScript.Echo Process.Name
Next
Další informace o nastavení různých úrovní zosobnění nebo ověřování ve skriptu nebo nastavení výchozích hodnot počítače najdete v následujících tématech:
- Změna výchozích přihlašovacích údajů pomocí VBScriptu
- změna výchozího nastavení zosobnění pomocí VBScriptu
- Nastavení výchozí úrovně zosobnění pomocí Registru
- přístup k objektu SWbemSecurity v VBScriptu
- SWbemSecurity
Změna výchozích přihlašovacích údajů pro ověřování pomocí jazyka VBScript
Úroveň ověřování ve skriptu můžete změnit pomocí řetězce monikeru a objektů SWbemLocator a SWbemSecurity.
Úroveň ověřování musí být nastavená podle požadavků cílového operačního systému, ke kterému se připojujete. Další informace naleznete v tématu Připojení Mezi Různými Operačními Systémy.
Následující příklad kódu VBScript ukazuje, jak změnit úroveň ověřování ve skriptu, který získá data volného místa ze vzdáleného počítače s názvem Server1.
strComputer = "Server1"
Set objWMIService = GetObject("winmgmts:{authenticationLevel=Pkt}!\\" _
& strComputer & "\root\cimv2")
Set colDisks = objWMIService.ExecQuery ("Select * from Win32_LogicalDisk")
For each objDisk in colDisks
Wscript.Echo "DeviceID: " & vbTab & objDisk.DeviceID & vbNewLine & _
"FreeSpace: " & vbTab & objDisk.FreeSpace
NextstrComputer = "."
Set objServices = GetObject( "winmgmts:{impersonationLevel=impersonate," _
& "authenticationLevel=pktPrivacy}!root/cimv2")
Set objProcessSet = objServices.ExecQuery("SELECT Name FROM Win32_Process",,48)
For Each Process in objProcessSet
WScript.Echo Process.Name
Next
Next
Při připojování skriptu pomocí monikeru k rozhraní WMI použijte krátký název zobrazený ve sloupci "Moniker name/description" v tabulce níže. Například v následujícím skriptu je úroveň ověřování nastavena na WbemAuthenticationLevelPktIntegrity.
SetobjWMIService = GetObject( _
"winmgmts:{authenticationLevel=pktPrivacy}!root\cimv2")
Následující tabulka uvádí úrovně ověřování, které můžete nastavit. Tyto úrovně jsou definovány ve Wbemdisp.tlb v výčtu WbemAuthenticationLevelEnum.
| Název/hodnota | Popis |
|---|---|
|
WbemAuthenticationLevelDefault 0 |
Přezdívka: Výchozí Rozhraní WMI používá výchozí nastavení ověřování systému Windows. Toto je doporučené nastavení, které umožňuje rozhraní WMI vyjednat na úroveň požadovanou serverem pro vracení dat. Pokud však obor názvů vyžaduje šifrování, použijte WbemAuthenticationLevelPktPrivacy. |
|
WbemAuthenticationLevelNone 1 |
Moniker: None Nepoužívá žádné ověřování. |
|
WbemAuthenticationLevelConnect 2 |
Moniker: Connect Ověřuje přihlašovací údaje klienta pouze v případech, kdy klient vytvoří relaci se serverem. |
|
WbemAuthenticationLevelCall 3 |
Zavolat Ověřuje se pouze na začátku každého volání, když server obdrží požadavek. |
|
WbemAuthenticationLevelPkt 4 |
Moniker: Pkt Ověřuje, že všechna přijatá data pocházejí z očekávaného klienta. |
|
WbemAuthenticationLevelPktIntegrity 5 |
Moniker: PktIntegrity Autentizuje a ověřuje, že žádná data přenášená mezi klientem a serverem nebyla změněna. |
|
WbemAuthenticationLevelPktPrivacy 6 |
Moniker: PktPrivacy Ověřuje všechny předchozí úrovně zosobnění a šifruje hodnotu argumentu každého vzdáleného volání procedury. Toto nastavení použijte, pokud obor názvů, ke kterému se připojujete, vyžaduje šifrované připojení. |
Pokud chcete zjistit úspěšné volání, zkontrolujte návratovou hodnotu po změně úrovně ověřování.
Například protože místní připojení mají vždy úroveň ověřování wbemAuthenticationLevelPktPrivacy, následující příklad nemůže nastavit úroveň ověřování, protože se připojuje k místnímu počítači.
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate," _
& "authenticationLevel=pktPrivacy}!" _
& "\\" & strComputer & "\root\cimv2")
Zprostředkovatel může nastavit zabezpečení v oboru názvů tak, aby se nevracela žádná data, pokud v připojení k danému oboru názvů nepoužíváte ochranu osobních údajů paketů (PktPrivacy). Tím se zajistí, že se data šifrují, protože překračují síť. Pokud se pokusíte nastavit nižší úroveň ověřování, zobrazí se zpráva o odepření přístupu. Další informace naleznete v tématu Zabezpečení oborů názvů rozhraní WMI.
Změna výchozích úrovní zosobnění pomocí jazyka VBScript
Při volání rozhraní API pro skriptování pro rozhraní WMI se doporučuje použít výchozí hodnoty, které rozhraní WMI poskytuje pro úroveň zosobnění. Vzdálená volání a někteří poskytovatelé s více než jedním segmentem směrování sítě vyžadují vyšší úroveň zosobnění, než používá rozhraní WMI. Pokud úroveň zosobnění nestačí, poskytovatel může žádost odmítnout nebo poskytnout neúplné informace.
Pokud úroveň zosobnění nenastavíte v monikeru nebo nastavením SWbemSecurity.ImpersonationLevel na zabezpečitelný objekt, nastavte výchozí úroveň zosobnění modelu DCOM pro operační systém. Úroveň zosobnění musí být nastavena podle požadavků cílového operačního systému, ke kterému se připojujete. Další informace naleznete v tématu Připojení Mezi Různými Operačními Systémy.
Následující příklad kódu jazyka VBScript ukazuje změnu úrovně zosobnění ve stejném skriptu uvedeném výše.
strComputer = "Server1"
Set objWMIService = GetObject("winmgmts:{impersonationLevel=Impersonate}!\\" _
& strComputer & "\root\cimv2")
Set colDisks = objWMIService.ExecQuery("Select * from Win32_LogicalDisk")
For each objDisk in colDisks
Wscript.Echo "DeviceID: " & vbTab & objDisk.DeviceID & vbNewLine & _
"FreeSpace: " & vbTab & objDisk.FreeSpace
Next
Následující tabulka uvádí úrovně ověřování v WbemImpersonationLevelEnum, které se používají.
| Název/hodnota | Popis |
|---|---|
|
wbemImpersonationLevelAnonymous 1 |
Moniker: Anonymní Skryje přihlašovací údaje volajícího. Volání rozhraní WMI může selhat s touto úrovní zosobnění. |
|
wbemImpersonationLevelIdentify 2 |
Moniker: Identifikace Umožňuje objektům dotazovat přihlašovací údaje volajícího. Volání rozhraní WMI může selhat s touto úrovní zosobnění. |
|
wbemImpersonationLevelImpersonate 3 |
Moniker: Napodobit Umožňuje objektům používat přihlašovací údaje volajícího. Toto je doporučená úroveň imitační pro skriptovací API pro volání rozhraní WMI. |
|
wbemImpersonationLevelDelegate 4 |
Moniker: Delegát Umožňuje objektům povolit, aby jiné objekty používaly přihlašovací údaje volajícího. Toto převzetí identity bude fungovat s API pro skriptování pro volání WMI, ale může představovat zbytečné bezpečnostní riziko. |
Následující příklad ukazuje, jak nastavit zosobnění v řetězci moniker při získání konkrétní instance Win32_Process.
Set object = GetObject("winmgmts:{impersonationLevel=impersonate}!root\cimv2:Win32_Process.Handle='0'")
Další informace naleznete v tématu Vytvoření aplikace rozhraní WMI nebo skript.
Nastavení výchozí úrovně zosobnění pomocí registru
Pokud máte přístup k registru, můžete také nastavit výchozí klíč registru na úrovni zosobnění. Tento klíč určuje, jakou úroveň zosobnění rozhraní API pro skriptování pro rozhraní WMI používá, pokud není uvedeno jinak. Následující cesta identifikuje cestu registru.
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WBEM\skriptování\Výchozí úroveň zosobnění
Ve výchozím nastavení je klíč registru nastaven na hodnotu 3 a určuje úroveň zosobnění. Někteří poskytovatelé můžou vyžadovat vyšší úroveň zosobnění.
Přístup k objektu SWbemSecurity v jazyce VBScript
Další způsob, jak nastavit úroveň zosobnění, je pomocí objektu zabezpečení SWbemSecurity, který se zobrazí jako vlastnost Security_ objektů SWbemServices, SWbemObject, SWbemObjectSet, SWbemEventSource, SWbemObjectPatha SWbemLocator.
Rozhraní WMI předá nastavení zabezpečení nadřazeného objektu potomkům původního objektu. Proto můžete nastavit úroveň impersonation objektu SWbemServices po přihlášení k rozhraní WMI a při volání rozhraní API s využitím tohoto objektu nebo objektů, které jsou jím vytvořeny, například u objektů typu SWbemObject.