SCCM Configuration Item

Welcome Forums General PowerShell Q&A SCCM Configuration Item

This topic contains 2 replies, has 3 voices, and was last updated by

 
Participant
1 month, 1 week ago.

  • Author
    Posts
  • #121986

    Participant
    Points: 11
    Rank: Member

    Hello

    I would like to start off with a disclaimer that I am rather new to the powershell game.  Most of my experience generally revolves around PS app deploy.

    I recently was asked to start digging in to CI/CB within SCCM and my first task is to come up with a script for Symantec DLP.

    I am using Get-Process to determine if a single process is running but I am having problems getting a false return if one of multiple processes are not running.

    Ultimately I need determine which of 2 processes could not be running and then start that process.

     

    Thank you in advance for any feedback

  • #122022

    Participant
    Points: 322
    Helping Hand
    Rank: Contributor

    It's critical that if you are new, that you first spend the time to ramp up to prevent a lot of unnecessary frustration and confusion you rare going to encounter.

    Do a search on Microsoft Virtual Academy on PowerShell and Youtube for no cost video training.

    Use all the free eBooks on this site, read the full help file on any cmdlet you are trying to use, practice with the examples, then read the helpfile again, then pick up a few good books, like, 'PowerShell in a Month of Lunches', by the creator of this site, Don Jones. There are lots of free PowerShell eBooks on Microsoft's websites.

    See also: The PowerShell Survival Guide
    https://social.technet.microsoft.com/wiki/contents/articles/183.windows-powershell-survival-guide.aspx

    We love to help,. but as a rule, you have to, show what you have or you leave us to guessing.
    If you are trying to get all processes of a specific app, you just ask for that using a partial name.

    # Get all running processes for Symantec
    Get-Process | 
    Where-Object {$_.mainwindowhandle -ne 0} | 
    Select-Object -Property Name, MainWindowTitle | 
    Where-Object -Property MainWindowTitle -Like '*calc*'
    
    # Results
    
    Name                 MainWindowTitle
    ----                 ---------------
    ApplicationFrameHost Calculator     
    Calculator           Calculator 
    

  • #122139

    Participant
    Points: 60
    Rank: Member

    Hey BStarbuck8307

    On a really basic level you'd use something like the script below.

    The elements of it are to have the full path of the processes to be checked stored in an array, obtain all running processes and store them in a separate variable, and then iterate through each of the processes to be checked to see if it features in the running processes. If it doesn't then it performs the action required.

    But if you're starting of a process manually bear in mind that

    a) The process will run in the user context of the account that the powershell process is running in
    b) The process will exit on log off and because the process will be a child process of the powershell session, it will also quit upon the powershell session ending.

    Generally speaking unless it's a service (in which case you use the dedicated xxx-Service cmdlets for management) you're not likely to want to spark of a process in a powershell session that you want to continue to run afterwards (if i understand right you are getting sccm to do the execution of your script?). Are you sure these processes aren't started via a windows service? Can you give some more details?

    $tocheck = @('/Applications/WhatsApp.app/Contents/MacOS/WhatsApp', '/bin/zsh', '/System/Library/CoreServices/Spotlight.app/Contents/MacOS/Spotlight', '/bin/imaginary')
    $process = Get-Process | Select-Object -ExpandProperty Path
    $tocheck.ForEach(
    {
    $status = $psitem -notin $process
    if ($status) {
    do something
    }
    }
    )
    

You must be logged in to reply to this topic.