Vraag


Acties:
  • 0 Henk 'm!

  • TommyGun
  • Registratie: Mei 2004
  • Laatst online: 21-07 23:26

TommyGun

Stik er maar in!

Topicstarter
Heren,

Momenteel beschik ik over het volgende script om een Windows server te controleren op Pending Reboot;

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
'*******************************************************************************
'*Configure system parameters and variables
Dim flgRebootNeeded, oAPI, oBAG
Set oAPI = CreateObject("MOM.ScriptAPI")
Set oBag = oAPI.CreateTypedPropertyBag(StateDataType)
Set objSystemInfo = WScript.CreateObject("Microsoft.Update.SystemInfo")
'*******************************************************************************
'*Check reboot value; if objSystemInfo = 0, no reboot is required. If it = -1,
'* a reboot is required.
flgRebootNeeded = objSystemInfo.rebootrequired
If flgRebootNeeded = 0 Then
Call oBag.AddValue("State","GOOD")
Else
Call oBag.AddValue("State","BAD")
End If
Call oAPI.Return(oBag)
'*******************************************************************************
'*End of Script


Dit werkt, maar diezelfde check wil ik gaan toepassen met behulp van een WMI query. Echter kan ik afgezien van https://p0w3rsh3ll.wordpr...ows-updates-installation/ niet vinden in welke namespace en class deze waarde zich bevindt.

Als alternatief heb ik het volgende gevonden; https://blogs.technet.mic...ell-orchestrator-runbook/ en hoewel ik via WBEMTest wel naar de gewenste property kan 'bladeren', lukt het me niet om hiervoor een werkende query te schrijven. Is dit überhaupt wel mogelijk aangezien DetermineifRebootPending een method is?

Wat ik onder andere geprobeerd heb;
Namespace: root\ccm\ClientSDK
Query's;
select DetermineIfRebootPending from CCM_ClientUtilities --> invalid query
select RebootPending from CCM_ClientUtilities.DetermineIfRebootPending --> invalid query
select * from CCM_ClientUtilities --> leeg

Alvast bedankt!

“In a world without walls and fences, who needs Windows and Gates".

Beste antwoord (via TommyGun op 19-07-2016 16:15)


  • Meekoh
  • Registratie: April 2005
  • Laatst online: 14:00
Semt-x schreef op donderdag 30 juni 2016 @ 14:51:
WQL is een interface taal. Je kan geen methods uitvoeren in WQL, die methods kun je programma technisch aanroepen met bijv scripts in Python, vbscript of powershell. Zoals in mijn voorbeeld.
Vandaar ook mijn opmerking. Als je gebonden bent aan WMI query's (WQL) dan kun je geen methods uitvoeren. Dan kun je vbscripten/powershellen/C#pen wat je wilt maar als TS alleen WMI Query's kan doen, dan heeft hij daar niets aan.

Computer says no

Alle reacties


Acties:
  • 0 Henk 'm!

  • SteeringWheel
  • Registratie: Augustus 2004
  • Laatst online: 22-05 16:46
En deze dan: https://gallery.technet.m...dingReboot-Query-bdb79542. Erg uitgebreid moet ik zeggen. 10 seconden googlen op 'check computer pending reboot' :)

A forum post should be like a skirt. Long enough to cover the subject material, but short enough to keep things interesting.


Acties:
  • 0 Henk 'm!

  • TommyGun
  • Registratie: Mei 2004
  • Laatst online: 21-07 23:26

TommyGun

Stik er maar in!

Topicstarter
SteeringWheel schreef op donderdag 30 juni 2016 @ 11:20:
En deze dan: https://gallery.technet.m...dingReboot-Query-bdb79542. Erg uitgebreid moet ik zeggen. 10 seconden googlen op 'check computer pending reboot' :)
Dat is PowerShell ;) En had ik uiteraard allang gevonden.

Ik kan, details even achterwege gelaten, enkel een WMI query uitvoeren vanuit de monitoring oplossing, geen PS of wat dan ook.

[ Voor 4% gewijzigd door TommyGun op 30-06-2016 11:23 ]

“In a world without walls and fences, who needs Windows and Gates".


Acties:
  • 0 Henk 'm!

  • Meekoh
  • Registratie: April 2005
  • Laatst online: 14:00
Je kunt via een query geen method uitvoeren. Wellicht handig om wat meer info over je monitoring pakket te geven? Zo te zien gebruikte je SCOM?

Computer says no


Acties:
  • 0 Henk 'm!

  • SteeringWheel
  • Registratie: Augustus 2004
  • Laatst online: 22-05 16:46
TommyGun schreef op donderdag 30 juni 2016 @ 11:22:
[...]


Dat is PowerShell ;) En had ik uiteraard allang gevonden.

Ik kan, details even achterwege gelaten, enkel een WMI query uitvoeren vanuit de monitoring oplossing, geen PS of wat dan ook.
Als je alleen een enkele wmi query uit kunt voeren dan kun je het wel opgeven volgens mij...

A forum post should be like a skirt. Long enough to cover the subject material, but short enough to keep things interesting.


Acties:
  • 0 Henk 'm!

  • TommyGun
  • Registratie: Mei 2004
  • Laatst online: 21-07 23:26

TommyGun

Stik er maar in!

Topicstarter
Meekoh schreef op donderdag 30 juni 2016 @ 12:16:
Je kunt via een query geen method uitvoeren. Wellicht handig om wat meer info over je monitoring pakket te geven? Zo te zien gebruikte je SCOM?
Inderdaad, het probleem is dat een script-based rule geen alert kan genereren vanuit de UI. Daarvoor dien je met authoring tools aan de slag; https://blogs.technet.mic...from-a-script-based-rule/ Dat kan, maar dat moet ik gaan uitzoeken dus tenzij er geen andere mogelijkheid is ga ik dat wel doen.

Momenteel gebruik ik een monitor met het eerdergenoemde VBS script en dat werkt, maar voor een klant wil ik een rule maken die hetzelfde doet. De voornaamste reden is om te zorgen dat de state van de systemen niet op warning of critical komt te staan. De monitor kan ik wel een Information alert laten genereren maar de state van de monitor zelf is dan alsnog warning of critical en dus rolled dat up naar het hele systeem.

[ Voor 5% gewijzigd door TommyGun op 30-06-2016 13:21 ]

“In a world without walls and fences, who needs Windows and Gates".


Acties:
  • 0 Henk 'm!

  • Killah_Priest
  • Registratie: Augustus 2001
  • Laatst online: 07:33
Je voorbeeld VBscript maakt gebruik van een COM object (zoals VBscript doet), dit is dus geen WMI.
Voorzover ik het kan vinden is er geen standaard WMI class hiervoor (tenzij je SCCM gebruikt, daarin zit wel een WMI class).

Als je dit perse via WMI wilt doen dan zul je eerst zelf een WMI class moeten maken welke de betreffende info bevat (dit is niet zo moeilijk om te doen met Powershell en hoeft doorgaans maar eenmalig te gebeuren op een machine).

Zie https://blogs.technet.mic...-wmi-by-using-powershell/ voor een uitleg mbt WMI classes aanmaken.

[ Voor 15% gewijzigd door Killah_Priest op 30-06-2016 13:26 ]


Acties:
  • 0 Henk 'm!

  • Semt-x
  • Registratie: September 2002
  • Laatst online: 22-07 17:54
code:
1
2
3
4
5
6
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\.\ROOT\ccm\ClientSDK")
Set colClientUtilities = objWMIService.ExecQuery ("Select * from CCM_ClientUtilities")
For Each objClientUtility in colClientUtilities
    RebootPending = objClientUtility.DetermineifRebootPending()
    WScript.Echo RebootPending
Next


?

[ Voor 11% gewijzigd door Semt-x op 30-06-2016 14:26 ]


Acties:
  • +1 Henk 'm!

  • Meekoh
  • Registratie: April 2005
  • Laatst online: 14:00
Semt-x schreef op donderdag 30 juni 2016 @ 14:21:
code:
1
2
3
4
5
6
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\.\ROOT\ccm\ClientSDK")
Set colClientUtilities = objWMIService.ExecQuery ("Select * from CCM_ClientUtilities")
For Each objClientUtility in colClientUtilities
    RebootPending = objClientUtility.DetermineifRebootPending()
    WScript.Echo RebootPending
Next


?
Dat is nog steeds een script en geen WQL.

Computer says no


Acties:
  • 0 Henk 'm!

  • Semt-x
  • Registratie: September 2002
  • Laatst online: 22-07 17:54
WQL is een interface taal. Je kan geen methods uitvoeren in WQL, die methods kun je programma technisch aanroepen met bijv scripts in Python, vbscript of powershell. Zoals in mijn voorbeeld.

Acties:
  • 0 Henk 'm!

  • Killah_Priest
  • Registratie: Augustus 2001
  • Laatst online: 07:33
Semt-x schreef op donderdag 30 juni 2016 @ 14:21:
code:
1
2
3
4
5
6
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\.\ROOT\ccm\ClientSDK")
Set colClientUtilities = objWMIService.ExecQuery ("Select * from CCM_ClientUtilities")
For Each objClientUtility in colClientUtilities
    RebootPending = objClientUtility.DetermineifRebootPending()
    WScript.Echo RebootPending
Next


?
De root/ccm namespace is er alleen voor SCCM, dit zit niet standaard in Windows.

Acties:
  • Beste antwoord
  • +1 Henk 'm!

  • Meekoh
  • Registratie: April 2005
  • Laatst online: 14:00
Semt-x schreef op donderdag 30 juni 2016 @ 14:51:
WQL is een interface taal. Je kan geen methods uitvoeren in WQL, die methods kun je programma technisch aanroepen met bijv scripts in Python, vbscript of powershell. Zoals in mijn voorbeeld.
Vandaar ook mijn opmerking. Als je gebonden bent aan WMI query's (WQL) dan kun je geen methods uitvoeren. Dan kun je vbscripten/powershellen/C#pen wat je wilt maar als TS alleen WMI Query's kan doen, dan heeft hij daar niets aan.

Computer says no


Acties:
  • +1 Henk 'm!

  • TommyGun
  • Registratie: Mei 2004
  • Laatst online: 21-07 23:26

TommyGun

Stik er maar in!

Topicstarter
De enige, relatief eenvoudige, oplossing betreft;
https://blogs.technet.mic...from-a-script-based-rule/

Toch bedankt voor het meedenken :)

“In a world without walls and fences, who needs Windows and Gates".

Pagina: 1