Loading

SCCM

Skip Feed
  1. Some Windows10 PCs are not automatically upgraded to Snow Agent version 6.10 from old version 5.3
    We have the following Snow issue:   1 . We have deployed Snow Agent version 6.1. 0 for all Windows10 PCs in Bergen municipality before the summer holidays with date 25.6.2019   2 . We have discovered that there are still many Snow PCs that have not been automatically upgraded from old Snow Agent version 5.3 to new version 6.1.0 with a number of 532 PCs.   3. Prior to June 25, 2019, it was thoroughly tested with the current SCCM 6.1.0 package that it really upgraded from old version Snow agent version 5.3    See screenshot that illustrates / documents this with the 2 current Supersedence rules regarding. Snow version 5.3 and Snow Agent version 6.02 4 . What might be the reason why there are still 532 W10 PCs that have not been automatically upgraded to Snow Agent version 6.1.0? 5 . Possible causes as I have observed so far: A. Strongly suspect that the main reason is that the current 532 PCs are only used for short time intervals and thus have not the SCCM agent was given time to upgrade to Snow version 6.1.0.   This has been confirmed using the internal monitoring system with 4 random samples with the following dates: 8.7.19 + 30.7.19 + 31.7.19 B.   Some PCs run on old W10 build version: Microsoft Windows 10 Enterprise (Build 15063), unsure of that may have been a possible explanation. C. On our Snow Inventory server, I detect the following status in the C folder: \ Program Files \ Snow Software \ Snow Inventory \ Server \ Incoming \ data \ error   710 Files, 0 Folders with snowpack files .snowpack and snowpack.log files with Date range: 19. February 2019 to 15. August 2019, Uncertain about this is relevant to this issue, but I mention it as a possible interim cause.
    Expand Post

    1 of 3
    • Hi , If the existing agents are still reporting ok, and there's no trace of the new agent on the computers, then it's an SCCM problem. SCCM should deploy the Agent even if there are problems with the Snow Agent running or reporting. Recently I did an SCCM deployment with many remote computers that connect only occasionally. We had to re-advertise the SCCM package a couple of times to reach more computers. Also, due to an SCCM configuration issue an unrelated package was failing and blocking any further packages from SCCM - so our Snow package wasn't even sent to many computers that are online full-time, until that issue was resolved. I would suggest thoroughly checking SCCM operation. We emailed owners of remote computers without agents to ask them to leave their computer on and online for a while, so that SCCM had time to work. Cheers Colin ‌ ‌ ‌
      Expand Post

  2. Adobe Reader showing up multiple times in Snow.
    We use SCCM to deploy the latest MSI's of Adobe Reader DC to our environment (currently v19), however, Snow is showing that we have old versions of Adobe Reader installed on our machines alongside the new ones. I've checked a handful of these machines and found it to not be the case.  It seems to think that the new version isn't installed locally (as it's highlighted in orange) and that I'm still using an older 2015 version (last used is shown as 27/11), even though I've never used on this machine before as it was built in the last year. Snow seems to think that we currently have over 250+ installations of this old Adobe Reader DC 2015, which is not good for our reporting when it comes to addressing vulnerabilities. Is something being left over from the upgrades? Or does it take some time before Snow realises it's been uninstalled? Or perhaps Snow has a problem with successfully detecting Adobe Reader DC?
    Expand Post

    1 of 5
    • Sorry for the delayed update on this, we eventually found out that the problem was. It turns out that the the Snow Update Service wasn't running on the server. So we enabled the service and it applied a load of updates and is now reporting back on software correctly!

  3. All Applications report for specific client OS

    Hello, 

    New to the forum so please be gentle. We have recently starting deploying Windows 10 machines and they have the SNOW Inventory client installed on them and reporting back OK. Since we deploy now deploy all applications to client machines via SCCM I was hoping that the SNOW LM interface was able to give me an 'All Applications' report but with the criteria of the client OS being Windows 10. Is this possible?

    Thanks

    Lee

    Expand Post

    • Hi,  This is not directly available however there is a work around of sorts. You can run an 'Applications per computer' report. Add a filter for 'Operating system' to match your Windows 10 OS you can then move 'Application' to the the report grouping field to get a list of all applications Hope that helps

  4. SCCM - Add Device Collection with RuleQuery

     

    We recently had a problem in the collection population with RuleDirect, which is that to   install or reinstall a new operating system, the computer needs to be removed from SCCM.   The impact of this on the implementation of computers in collections with RuleDirect is   excluded from the SCCM and also from the collection and even after the installation of the   new operating system the computer did not return to collection anymore. To solve this issue, we started to implement the inclusion of new computers in the collection   based on RuleQuery.   Below is an excerpt of the code we use to perform this implementation. param(   [Parameter(Mandatory=$true)][string]$SCCMUserName,   [Parameter(Mandatory=$true)][string]$SCCMServer,   [Parameter(Mandatory=$true)][string]$SCCMSiteCode,   [Parameter(Mandatory=$true)][string]$ComputerDevice,   [Parameter(Mandatory=$true)][string]$CollectionID     )   $SCCMServiceAccountName = Get-APSetting SCCMServiceAccountName   $SCCMServiceAccount = Get-ServiceAccount -Name $SCCMServiceAccountName -Scope 0   $SCCMServiceAccountPassword = $SCCMServiceAccount.Password | ConvertTo-SecureString -AsPlainText -Force   $Credentials = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $SCCMUserName,$SCCMServiceAccountPassword     $ParamConnectSCCM = [ordered]@{   "NameSpace" = "Root\SMS\Site_$SCCMSiteCode"   "ComputerName" = $SCCMServer   "Credential" = $Credentials   "ErrorAction" = 'Stop'   } ### ComputerDevice Validation ###   try{   if($ComputerDevice.Contains('\')){   $Domain = $ComputerDevice.Split('\')[0]   $HostName = $ComputerDevice.Split('\')[1]   $ComputerObj = @(Get-WmiObject -Class SMS_R_SYSTEM -Filter "Name = '$HostName' AND ResourceDomainORWorkgroup = '$Domain' AND Client = '1'" @ParamConnectSCCM)   }   else{   $ComputerObj = @(Get-WmiObject -Class SMS_R_SYSTEM -Filter "Name = '$ComputerDevice' AND Client = '1'" @ParamConnectSCCM)   }   if($ComputerObj.Count -gt 1){   Write-Error "Found more than one record with the name $ComputerDevice with attributes Client = 1"   }   if($ComputerObj.Count -eq 1){   Write-Host "The computer: $($ComputerObj.Name) was found with the following ID: $($ComputerObj.ResourceId)"   }   if($ComputerObj.Count -eq 0){   Write-Error "The computer: $($ComputerDevice) not found in SCCM"   }   }   catch{   Write-Error "Error while browsing the computer $ComputerDevice. Exception: $($_. Exception.Message)"   } ### CollectionID Validation ###   try{   $CollectionObj = @(Get-WmiObject -Class SMS_Collection -Filter "CollectionID = '$CollectionID' AND CollectionType = 2" @ParamConnectSCCM)   if($CollectionObj.Count -eq 1){   $CollectionObj = $CollectionObj[0]   Write-Host "The Collection: $($CollectionObj.CollectionID) was found in SCCM with the name: $($CollectionObj.Name)."   }   if($CollectionObj.Count -eq 0){   Write-Error "The Collection: $($CollectionID) not found in SCCM"   }   if($CollectionObj.Count -gt 1){   Write-Error "Found more than one record with ID: $($CollectionID)."   }   }   catch{   Write-Error "Error while browsing then collection $($CollectionID). Exception: $($_.Exception.Message)"   } ### Include, Create and Update Collection ### $ArrayRules = @()   $ArrayComputer = @() if($ComputerObj.Count -eq 1){     foreach($Collection in $CollectionObj){   $Collection.Get()   $CollectionRule = $Collection.CollectionRules   if($CollectionRule.Count -eq 0){   Write-Host "The collection $($CollectionObj.Name) does not have a RuleQuery created. The initial RuleQuery will be created."   $FirstQuery = '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 where SMS_R_System.NetbiosName in ("0",'+'"'+$ComputerObj.Name+'"'+')'   try{   $FirstRule = (Get-WmiObject -List -Class SMS_CollectionRuleQuery @ParamConnectSCCM).CreateInstance()   $FirstRule.QueryExpression = $FirstQuery   $FirstRule.RuleName = $CollectionObj.Name   $Collection.Put() | Out-   if(($Collection.CollectionRules | Where-Object { ($_.RuleName -like "$($FirstRule.RuleName)") -and ($_.__CLASS -like "SMS_CollectionRuleQuery") } | Measure-Object).Count -eq 1){   Write-Host "QueryRule was successfully created. Name: '$($FirstRule.RuleName)' in collection '$($CollectionObj.Name)"   $InvokeUpdate = $Collection.RequestRefresh()   if($InvokeUpdate.ReturnValue -eq 0){   Write-Host "Installation | Added $($ComputerObj.Name) in collection $($CollectionObj.Name)."   }   else{   Write-Error "Failed to update collection $($CollectionObjInstall.Name)."   } }   }   catch{   Write-Error "Failed to create RuleQuery instance. Exception: $($_.Exception.Message)"   }   }   if($CollectionRule.Count -ne 0){   Write-Host "The collection $($CollectionObj.Name) has one or more associated Rule. A single RuleQuery containing all members will be created."   foreach($Rule in $Collection.CollectionRules){   if($Rule.__CLASS -eq "SMS_CollectionRuleDirect"){   $ArrayRules += $Rule.RuleName   }   if($Rule.__CLASS -eq "SMS_CollectionRuleQuery"){   $Query = $Rule.QueryExpression   $List = $Query.Split('()')[1].Split(',').Split(' ').Split('"',[System.StringSplitOptions]::RemoveEmptyEntries).Split('"', [System.StringSplitOptions]::RemoveEmptyEntries)   $ArrayComputer += $List   }   }   $NewArray = @()   $NewArray = $ArrayRules + $ArrayComputer | select -Unique   $NewArrayQuery = @() foreach($PC in $NewArray){   if($PC -notin 0){   $NovaArrayQuery += ',"'+$PC+'"'   }   }   $NewArrayQuery += ',"'+$ComputerObj.Name+'"'   $NewArrayQuery = $NewArrayQuery | select -Unique   $Replace = '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 where SMS_R_System.NetbiosName in ("0"'+$NewArrayQuery+')'   Write-Host "New select associate ($Replace)"   try{   $NewRule = (Get-WmiObject -List -Class SMS_CollectionRuleQuery @ParamConnectSCCM).CreateInstance()   $NewRule.QueryExpression = $Replace   $NewRule.RuleName = $CollectionObj.Name   $Collection.Put() | Out-   if(($Collection.CollectionRules | Where-Object { ($_.RuleName -like "$($NewRule.RuleName)") -and ($_.__CLASS -like "SMS_CollectionRuleQuery") } | Measure-Object).Count -eq 1){   Write-Host = "QueryRule was successfully created. Name: '$($NewRule.RuleName)' in collection '$($CollectionObj.Name)."   $InvokeUpdate = $Collection.RequestRefresh()   if($InvokeUpdate.ReturnValue -eq 0){   Write-Host "The Collection $($CollectionObj.Name) has been updated with the new RuleQuery, containing the new computer: $($ComputerObj.Name)."   Write-Host "Installation | Added $($ComputerObj.Name) in collection $($CollectionObj.Name)."   }   else{   Write-Error "Failed to update collection $($CollectionObjInstall.Name)."   }   }   }   catch{   Write-Error "Failed to create RuleQuery instance. Exception: $($_.Exception.Message)"   }   }   } }
    Expand Post

    • I recently worked on an update to the process of including computers in SCCM collection, basically using RuleQuery. Below is the code update. ?  <# .SYNOPSIS SCCM Collections Update .DESCRIPTION Function to create rule query, add and or remove devices in specific SCCM collections. The function transforms all rules members into a single rule query, containing all members .PARAMETER SCCMUserName SCCM User, Value passed by AP Service Account .PARAMETER SCCMServer The SCCM server that will be connected and executed the script with WMI queries. .PARAMETER SCCMSiteCode SCCM Site Code Three characters for internal use (PBC) .PARAMETER CollectionID Collection identifier to update .PARAMETER Device Device that will be added to or removed from the collection .PARAMETER Action Action to be performed on collection, 1 to add and 2 to remove .NOTES AUTHOR: Ricardo Rérison LASTEDIT: 2019-11-01 VERSION: 1.0 PREREQUISITE: SCCM server WMI, access and write permission in SCCM, to make changes to collection members. CHANGELOG: 1.0 - Initial Release #> param(    [Parameter(Mandatory=$true)][string]$CollectionID,    [Parameter(Mandatory=$true)][string]$Device,    [Parameter(Mandatory=$true)][string]$Action,    [Parameter(Mandatory=$true)][string]$SCCMSiteCode,    [Parameter(Mandatory=$true)][string]$SCCMServer,    [Parameter(Mandatory=$true)][string]$SCCMUserName ) $SCCMServiceAccountName = Get-APSetting SCCMServiceAccountName $SCCMServiceAccount = Get-ServiceAccount -Name $SCCMServiceAccountName -Scope 0 $SCCMServiceAccountPassword = $SCCMServiceAccount.Password | ConvertTo-SecureString -AsPlainText -Force $Credentials = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $SCCMUserName,$SCCMServiceAccountPassword $ParametrosConnectSCCM = [ordered]@{    "NameSpace" = "Root\SMS\Site_$SCCMSiteCode"    "ComputerName" = $SCCMServer    "Credential" = $Credentials    "ErrorAction" = 'Stop' } function UPDATE_COLLECTION_SCCM{    param(       [STRING]$CollectionID,       [STRING]$Device,       [STRING]$Action    )    begin{       $ContenCollectionObj = @()       if($Action -eq 1){          $UpdateType = "Add"       }       elseif($Action -eq 2){          $UpdateType = "Remove"       } $CollectionObj = @(Get-WmiObject -Class SMS_Collection -Filter "CollectionID = '$($CollectionID)'" @ParametrosConnectSCCM) if($CollectionObj.Count -eq 1){$ContentObjCollection = $CollectionObj } elseif($CollectionObj.Count -ne 1){Write-Error "Collection $($CollectionID) does not exist in SCCM database."} Write-Host "Collection Update: $($ContentObjCollection.Name) from ID: $CollectionID" Write-Host "Computer to be updated in collection: $Computer" Write-Host "Update Type: $UpdateType" } process{ Write-Host "Starting processing" function CheckDeviceInCollection{ param( $Device, $CollectionID ) $Server = "XXXXX" $DataBase = "XXXX" $User = "XXXX" $Pass = "XXXX" $connection = New-Object System.Data.SqlClient.SqlConnection $connection.ConnectionString = "Server = $Server; Database = $DataBase; User ID = $User; Password = $Pass;" $connection.Open() $command = New-Object System.Data.SQLClient.SQLCommand $command.Connection = $connection $command.CommandText = " SELECT * FROM ( SELECT DISTINCT UPPER(SUBSTRING(REPLACE(REPLACE(REPLACE(VALUE,')',''),'''',''),' ',''),2,10)) AS PC, CollectionID FROM ( SELECT CollectionID, QueryExpression FROM [XXXX].[SCCM_PBC].[DBO].[v_CollectionRuleQuery] ) AS DADOS CROSS APPLY STRING_SPLIT(QueryExpression, ',') WHERE ( UPPER(SUBSTRING(REPLACE(REPLACE(REPLACE(VALUE,')',''),'''',''),' ',''),2,10)) LIKE 'N[0-9]%' OR UPPER(SUBSTRING(REPLACE(REPLACE(REPLACE(VALUE,')',''),'''',''),' ',''),2,10)) LIKE 'W[0-9]%') ) AS Data WHERE CollectionID = '$CollectionID' AND PC = '$Device' " $Reader = $command.ExecuteReader() $DataTable = New-Object System.Data.DataTable $DataTable.Load($Reader) $Table = $DataTable $ReturnValue = $ $ReturnValue = $Table.PC $ReturnValue } function CheckActiveDeployment { param( $CollectionID ) $CheckActive = (Get-WmiObject -ComputerName $SCCMServer -Class SMS_ApplicationAssignment -Namespace root/SMS/site_$SCCMSiteCode -Filter "TargetCollectionID='$($CollectionID)' and OfferTypeID='0'").ApplicationName $CheckActive } $RulesDirect = @() $RuleQuery = @() $Start = 0 $ValInt = $ $CheckDeviceInCollection = CheckDeviceInCollection -Device $Device -CollectionID $CollectionID $ContentObjCollection | % { $_.Get() $Coll = $_ if(($_.CollectionRules).Count -le 0){ write-host "Collection has no Membership rules define, first created." if($Action -eq 1){ $QueryString = $ $QueryReplace = '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 where SMS_R_System.NetbiosName in ("0",'+'"'+$Device+'"'+')' } elseif($Action -eq 2){ $QueryString = $ $QueryReplace = '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 where SMS_R_System.NetbiosName in ("0")' } } elseif(($_.CollectionRules).Count -ge 1){ Write-Host "The collection has one or more Rules. A single RuleQuery will be created." $_.CollectionRules | % { $QueryString = $ if($_.__CLASS -eq "SMS_CollectionRuleDirect"){ $RulesDirect += $_.RuleName } elseif($_.__CLASS -eq "SMS_CollectionRuleQuery"){ $RuleQuery += ($_.QueryExpression).Split('()')[1].Split(',').Split(' ').Split('"',[System.StringSplitOptions]::RemoveEmptyEntries).Split('"', [System.StringSplitOptions]::RemoveEmptyEntries) } if($ArrayUpdate -ne $ -or $ArrayUpdate -eq $){ $ArrayUpdate = @() $ArrayUpdate = $RulesDirect + $RuleQuery | select -Unique } if($Action -eq 1){ $QueryString = $ $RespAction = "Adding" if($NewQueryArray -ne $ -or $NewQueryArray -eq $){ $NewQueryArray = @() $ArrayUpdate | % { if($_ -notin 0){ $NewQueryArray += ',"'+$_+'"' } } } $NewQueryArray += ',"'+$Device+'"' $QueryString = $NewQueryArray | select -Unique } elseif($Action -eq 2){ $QueryString = $ $RespAction = "removing" if($NewQueryArray -ne $ -or $NewQueryArray -eq $){ $NewQueryArray = @() $ArrayUpdate | % { if($_ -notin 0 -and $_ -notin $Device){ $NewQueryArray += ',"'+$_+'"' } } } $QueryString = $NewQueryArray | select -Unique } } $QueryReplace = '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 WHERE SMS_R_System.NetbiosName in ("0"'+$QueryString+')' } } function UpdateMembershipRule { param( $CollectionObj, $RespAction, $Device, $Query ) try{ $InsertNewRule = (Get-WmiObject -List -Class SMS_CollectionRuleQuery @ParametrosConnectSCCM).CreateInstance() $InsertNewRule.QueryExpression = $Query $InsertNewRule.RuleName = $Coll.Name $Coll.CollectionRules = $InsertNewRule $Coll.Put() | Out- if(($Coll.CollectionRules | Where-Object { ($_.RuleName -like "$($InsertNewRule.RuleName)") -and ($_.__CLASS -like "SMS_CollectionRuleQuery") } | Measure-Object).Count -eq 1){ $InvokeUpdate = $ContentObjCollection.RequestRefresh() if($InvokeUpdate.ReturnValue -eq 0){ $MessageReturn = "The Collection $($Coll.Name) from ID: $($Coll.CollectionID) has been updated, $RespAction Computer: $Device" } else{ $MessageReturnWarning = "Failed to update collection $($Coll.Name) from ID: $($Coll.CollectionID)" } } } catch{ Write-Warning "Unable to update collection: $($Coll.CollectionID)" } if($MessageReturnWarning){Write-Warning "$MessageReturnWarning"} if($MessageReturn){Write-Host "$MessageReturn"} } UpdateMembershipRule -CollectionObj $ContentObjCollection -RespAction $RespAction -Device $Device -Query $QueryReplace function Complia
      Expand Post

  5. Why is Software Install Date More Recent in SCCM than in SNOW?

    We are using SNOW to locate unused software where the software has been installed at least 90 days.  Then we use SCCM to remove the unused software.  We are seeing in SCCM that the software install date is different than what SNOW is reporting.  i.e. - we recommend removal of software A as SNOW shows it was installed in Nov 2017 and never used, but SCCM shows it was installed in Jun 2017 (and in some cases is being used).

    What would cause the difference in install date detection?

    Thanks, Matthew

    Expand Post

    1 of 3
    • Community Manager (Flexera Software)

      Depending on the deployment method, we have seen that SCCM will over-write an install date on product updates, even if the product has never been launched or run.  Hope this helps. Adding ? to provide additional context.

  6. AP: Re-harvesting Learnings

     

    During a recent customer re-harvesting project a number of Q&A learnings have been captured, which maybe of use to the wider Snow AP community. Please note that each Q&A is applicable to SLM Vn.8.3 and AP Vn.3.4.1, enjoy! 

     

    SLM

     

    Q : Does un-selecting the "Available in Software Store" check box on the SLM "Store" tab exclude the application from re-harvesting?

    A : Unselecting the “Available in Software Store” on the “Store” tab does not exclude the application from re-harvesting. 

     

    Q: In SLM, how can you exclude an application from re-harvesting?

    A: To exclude an application from re-harvesting you must click on the “Uninstall Options” change button and select “No limited use”. You must then click “OK” and then “Save” (top section of the Ui). You can then either untick or keep the tick against “Available in Software Store”, it makes no difference to the re-harvesting SLM API end point. 

     

    Q: Should I be checking the SLM API re-harvesting end-point?

    A: Yes, check the FQDNforSLM/api/customers/X/appstore/applications/reharvestable/ API end point after enabling / disabling an application for re-harvesting to confirm the correct records are returned / removed. This is especially important during testing when re-harvesting can often be initiated in quick succession. 

     

    Q: Are there any limits against the Identifier field on the "Store" tab in SLM?

    A: The Identifier field on the SLM Store tab is limited to 64 characters, check values if you are copying and pasting into this field to ensure no truncation. The reason for the 64 character restriction is that the AD Schema limits Common Names, the values of the cn attribute, all objects (users, contacts, computers, groups) to 64 characters. As this field was originally designed to store AD Group names this constraint is fitting.  

     

    Q: Is the Identifier field strictly reserved for AD Group names?

    A: It is possible to re-use the Identifier field and store e.g. - SCCM Collections if SCCM Collections are utilised for membership instead of AD Groups. 

     

    Q: Can Identifiers be shared across different applications in SLM?

    A: Values entered into the Identifier field must be unique across the list of enabled application for re-harvesting in SLM and in some cases where e.g. - only a Uninstall Collection is required (or available) you will be forced into entering a dummy entry that should be ignored in the code, <dummy_install_id><delimiter><uninstall_id>, e.g. - C00001;C00002. This can happen if applications have been manually installed (no install package) and multiple versions of said application share a single uninstall package. 

     

    Q: Should I reference names or Ids?

    A: It is better to use Identifiers, IDs, than say (SCCM Collection) Names as names can be changed over time. 

     

    Q: What is the default duration that usage stats are kept for in SLM?

    A: By default SLM stores 90 days of usage stats, some customers may choose to increase this. Ensure that you familiarise yourself with the usage range you can work with, this is particularly applicable to "Uninstall settings for this application" --> "Uninstall this application based on usage" re-harvesting setting. 

     

    Q: What provisioning type can be used for re-harvesting based on usage?

    A: Re-harvesting based on usage can only occur against devices (and not Users). 

     

    Q: Should I address duplicate records in SLM before, during or after re-harvesting?

    A: Minimise complications as a consequence of duplicate devices (or users) in SLM and always ensure that any duplicates are resolved before AP re-harvesting schedules are triggered. 

     

    AP

     

    Q: At what point in the re-harvesting process should I apply exclusions?

    A: Use the "reharvest slm applications" activity to filter out all exclusions before invoking the uninstall workflow. This will optimise the process and reduce the amount of times the uninstall workflow is called. 

     

    Q: Do I need to know and understand the existing uninstallation process?

    A: Ensure you are familiar with the existing uninstallation process and the deployment technology that is employed to push uninstallation packages out. It is important to understand whether a device (or user) object needs to be added to a membership group in AD, or whether the process is more convoluted and the defined object should be removed from an Install Collection before being added to an Uninstall Collection. This will determine the Uninstall workflow activities.  

     

    Q: What information do I need in order to communicate with SCCM?

    A: As a minimum ensure you have the following information to communicate with SCCM Server via wmi: Server Name, Site Code, Service Account e.g. - AP_WorkflowEngine. 

     

    Q: What permissions do I need in order to communicate with SCCM during software re-harvesting?

    A: Ensure that the chosen service account e.g. - AP_WorkflowEngine service account has sufficient permissions in SCCM to make wmi calls, for verifying: Collections, Resources, Collection Membership. Sufficient permissions should also be granted for adding and removing resources to / from Collections but this should be restricted to only the Collections related to re-harvested applications. Targeted permissions are always safer, especially during automation procedures! 

     

    Q: When should I use exclusion Collections / Groups?

    A: Consider using exclusion Collections / Groups for larger volumes of devices (or users) that should be excluded from re-harvesting for a given application. 

     

    Q: Are there any differences between the "Store" tab fields and custom fields?

    A: The SLM Store tab field values are made available in the SLM re-harvesting API end-point against application and device / user records. If you are also reading custom field values from SLM, these will be accessible per application or device / user. This may impact how you use each field type value in your re-harvesting activity or how this data is stored to avoid repetition. 

     

    Q: Can I store custom information in the AP database/s?

    A: No custom data or custom objects should be created in the SnowAutomationPlatformDomain or SnowAutomationPlatformAzman databases. Instead if customised data has to be stored for use with AP, create a new database e.g. - SnowAutomationPlatformCustomerData. 

     

    The above has been identified in-part due to a fruitful partnership between a customer, partner and vendor - I therefore encourage you all to adopt a pro-active approach ensuring maximum learnings and understanding between all stakeholders, this is particularly important where customisation is required. 

     

    Regards, 

     

    /F

    Expand Post

    1 of 3
    • Nice work putting this together Filip! It’s awesome that you’ve identified some key points/information that others no doubt will find useful- and took the time to share. Thank you!

  7. 1 of 4
    • Sebastiano Bonfiglio (Flexera Software)

      Hi Tim, Kai, That's indeed a very good question. To answer your question, there is no benefit to use SCCM if all machines are deployed with a Snow Agent! Nowadays with Cloud Application Metering functionality in the Snow Agent, the gap with SCCM increased even more. We have been in situations where customers have a "SCCM unless" policy and the only option would be to connect to SCCM. Mostly when the application usage questions becomes a hot item, these customers switch to the Snow Agent. A reason for having both is when you're in a transition from SCCM to the Snow Agent, we then often use collection ID's in the SCCM connector to only retrieve machines that don't have a local Snow Agent installed. The more Snow Agents are deployed, the less machines will be imported from SCCM. This results in an optimal coverage in SLM during the transition. Hope this helps. Best regards, Sebastiano
      Expand Post

  8. Snow Inventory Agent - Metering mechanism
    Hi! I have a question regarding agent metering process.  Is there extension's list, which is supported by Inventory Agent? For example, there are extensions, which are included in predefined agent configuration: <IncludeCriteria>                  <FileType>exe</FileType>                  <FileType>wfd</FileType>                  <FileType>wfi</FileType>                  <FileType>wtd</FileType>                  <FileType>wti</FileType>                  <FileType>sys2</FileType>               <FileType>lnk</FileType>   </IncludeCriteria>‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ ‍ From the agent's instruction I have got this information: The primary focus of metering is desktop applications. Metering of usage is performed whenever a   Windows process is running. Processes are measured whether the application is open on the   desktop or running in the background. And from "All Snow Inventory Agent 5 Settings with Detailed Explanations" this: FileType   Optional element. May be specified multiple times.   If software is to be included it must match one of the file types specified.   Uses wildcard matching.   Example for Linux, OSX & Unix systems: ELF*executable* Example for Windows systems: sys2 Does it mean, that I can provide (theoretically)  <FileType>*</FileType>  to meter all file extensions? (eg. vbs, jobs, etc.) I am asking for this information to compare Snow metering option with SCCM (which provides metering information only for .exe extensions). Best regards, Viktors
    Expand Post

    • Landon Owens (Flexera Software)

      Hello  Viktors , Metering does not look at file extensions.  That is only significant to the daily inventory of the system, not the monitoring for metering data.  That information is gathered by the service through a polling period of the processor threads.  To better illustrate what is being captured open your task manager, and click on the Details tab, like this: Anything with a PID (Process ID number) will get captured and logged.  Just to fill in the rest of the process. What is collected is data like this one from Notepad++ App      Path: C:\Program Files (x86)\Notepad++\notepad++.exe         Local: 1         File Version: 6.8.0.8         Product Version: 6.8.0.8         Metadata            Comments:            Company Name: Don HO don.h@free.fr          File Description: Notepad++ : a free (GNU) source code editor            File Version: 6.88            Internal Name: npp.exe            Legal Copyright: Copyleft 1998-2015 by Don HO            Original FileName: Notepad++.exe            Product Name: Notepad++            Product Version: 6.88 User Company_Server\Snow      Remote Desktop usage         Client Name: Company_Computer         1 run(s) at 2016-09-09T08:24:15         Active between 2018-01-04T08:24:15 and 2018-01-01T08:25:15 This is all collected from the metadata on the PID, so even if the file is not located in a directory we inventory, we will find it when launched.  Additionally, and you can see at the bottom of the example were we also captured who launched it, and in this case it was a remote launch, so we captured the client system's name as well,  Plus, we recorded the amount of time the PID to be active.  NOTE: this data is stored on the local system in an encrypted file.  Hope this helps If you have any additional questions, I will be monitoring this thread,    Landon.Ownens Snow Support Manager – North America
      Expand Post

End of Feed
8 Chatter Feed Items
ALL CONVERSATIONS
UNSOLVED
ARTICLES
11 Posts

Related Topics

    Loading
    SCCM | Flexera