none
Falsche Ergebnisse/Ausgabe bei Abfrage in Collection RRS feed

  • Frage

  • Hallo,

    unter SCCM2007R2Sp2 habe ich eine Abfrage gebastelt, die alle Clients raussuchen soll, die den Adobe Acrobat VOR der Version 9.3.2.136 installiert haben.

    Da die Abfrage leider nicht die Version sauber abgleichen kann (meine 1.te Idee war, den Wert für die die Version ist kleiner als 9.3.2.136 zu setzen; wird jedoch als String angesehen), habe ich ein:

    Filename ist acrobat.exe

    FileVersion ungleich 9.3.2.136

    FileModifiedDate kleiner 03.04.2010 22:32

    Die 3 Daten sehe ich so auch im ResourceExplorer für eine Maschine, die den aktuellen Acrobat installiert hat.

    Die Abfrage tut auch fleissig, jedoch sehe ich in der Liste auch teilweise Rechner, die die Version 9.3.2.136 haben.

    Hier die Abfrage:

    select SMS_R_SYSTEM.ResourceID,SMS_R_SYSTEM.ResourceType,SMS_R_SYSTEM.Name,SMS_R_SYSTEM.SMSUniqueIdentifier,SMS_R_SYSTEM.ResourceDomainORWorkgroup,SMS_R_SYSTEM.Client from SMS_R_System inner join SMS_G_System_SoftwareFile on SMS_G_System_SoftwareFile.ResourceID = SMS_R_System.ResourceId where (SMS_G_System_SoftwareFile.FileName = "Acrobat.exe" and SMS_G_System_SoftwareFile.FileVersion != "9.3.2.163" and SMS_G_System_SoftwareFile.FileModifiedDate < "03.04.2010 22:32")

    Vermutlich liegts am Verständnis der Abfrage selbst - wo jedoch liegt der Fehler?

    André

     

    Mittwoch, 2. Juni 2010 12:14

Antworten

  • select *  from  SMS_R_System where SMS_R_System.Name not in (select *  from  SMS_R_System inner join SMS_G_System_ADD_REMOVE_PROGRAMS on SMS_G_System_ADD_REMOVE_PROGRAMS.ResourceId = SMS_R_System.ResourceId where SMS_G_System_ADD_REMOVE_PROGRAMS.DisplayName like "%Adobe Reader 9.3.2 MUI%")

    Ohne das live probiert zu haben ... das "select  * from" muss eindeutig sein, also wie in meinem Beispiel (will heissen: genau nachmachen, was dort steht ;-) ): "select distinct Name from SMS_R_System where Name not in (select distinct SMS_R_System.Name". In meinem Bsp wird in der Klammer ein "Name" zurückgegeben, entsprechend muss vor der Klammer auch auf diesen Namen abgefragt werden. Du musst also den * durch den Name ersetzen.
    Montag, 7. Juni 2010 13:56
    Beantworter

Alle Antworten

  • Schwer zu sagen, aber kann es sein, dass die falsch gelisteten Rechner mehrere arobat.exe (und entsprechend auch unterschiedliche Versionen) inventarisiert haben?

    Montag, 7. Juni 2010 11:38
    Beantworter
  • Hallo Torsten,

    ich kann den Fehler nicht finden, auch sehe ich im Resourceexplorer nur eine Version; somit verstehe ich nicht, weshalb bei der Abfrage nun andere Ergebnisse rauskommen.

    OK -> neue Abfrage, angelehnt an Deinen Artikel (So kann ich zwar nicht sagen, ob die Version kleiner oder größer ist, aber das kommt noch irgendwie....):

    http://www.mssccmfaq.de/2009/12/14/subselect-not-in-abfragen/

    ---------------

    select *  from  SMS_R_System where SMS_R_System.Name not in

    (select *  from  SMS_R_System inner join SMS_G_System_ADD_REMOVE_PROGRAMS on

    SMS_G_System_ADD_REMOVE_PROGRAMS.ResourceId = SMS_R_System.ResourceId

    where

    SMS_G_System_ADD_REMOVE_PROGRAMS.DisplayName like "%Adobe Reader 9.3.2 MUI%")

    ---------------

    Die Klammer-Abfrage selbst nach dem "not in" funktioniert, getestet über eine einzelene Query.

    Anscheinend ist auch kein Fehler im vorhergehenden select * ... not in..., denn erst, wenn ich das letzte Fenster des Assistenten schließe - die Query Rule Propetries-  in der ich die Collection auswähle, die abgefragt werden soll sowie die ResourceClass (System Resource), bekomme ich folgende Fehlermeldung:

    The query statement that you entered is not valid. Please enter a valid statement

    Was mich stört, ist im Assistenten-Fenster: Criterion Properties, in dem ich die SubselectValues sowie den not in Operator festlege, ein Ausrufezeichen neben meiner Subselect Abfrage sehe; diese habe ich unter den Queries angelegt und diese tut auch, wie oben schon geschrieben.

    Setze ich hier mit Absicht einen Fehler ein, so lässt mich der Assistent dieses Fenster schon garnicht schließen.

    Kannst Du mir sagen, wo hier der Fehler liegt?

    André

     

    Montag, 7. Juni 2010 13:27
  • select *  from  SMS_R_System where SMS_R_System.Name not in (select *  from  SMS_R_System inner join SMS_G_System_ADD_REMOVE_PROGRAMS on SMS_G_System_ADD_REMOVE_PROGRAMS.ResourceId = SMS_R_System.ResourceId where SMS_G_System_ADD_REMOVE_PROGRAMS.DisplayName like "%Adobe Reader 9.3.2 MUI%")

    Ohne das live probiert zu haben ... das "select  * from" muss eindeutig sein, also wie in meinem Beispiel (will heissen: genau nachmachen, was dort steht ;-) ): "select distinct Name from SMS_R_System where Name not in (select distinct SMS_R_System.Name". In meinem Bsp wird in der Klammer ein "Name" zurückgegeben, entsprechend muss vor der Klammer auch auf diesen Namen abgefragt werden. Du musst also den * durch den Name ersetzen.
    Montag, 7. Juni 2010 13:56
    Beantworter
  • Hi Torsten,

    die obige Abfrage kam aus dem Assistenten, hier habe ich eine korrekte Syntac erwartet... OK, die Abfrage funktioniert nun.

    Andere Frage: Im Resourceexplorer sehe ich bei verschiedenen Clients Adobe Acrobat sowie Adobe Reader. Erstes SW-Produkt wurde jedoch schon vor längerer Zeit wieder deinstalliert, und danach ein neuer HW Scan erfolgreich durchgeführt.

    In Hardware/Add/Remove Programs sehe ich also auch vergangene Daten? Wie kann ich dann das aktuelle (den Stand des letzten HW Scans) anzeigen bzw. auswerten?

    André

     

    Montag, 7. Juni 2010 15:14