mercredi 2 mai 2018

Block of conditions powershell

How do you chain 4 conditions together when you want either ONE set or the OTHER set of 2 condiitions to be true?

To be more precise I want to do:

If
-User is logged in AND -Operating system version is Windows 10

OR

-User is logged in AND -LogonUI process is not running


Don't bother with the commands, they all work correctly when isolated, my issue is chaining them together.

For example I have :

if (
        (Get-WmiObject –ComputerName $poste –Class Win32_ComputerSystem).UserName`
        -and`
        (Get-WmiObject -Computer $poste -Class Win32_OperatingSystem).Version -like "*10*"


    )
    { echo do X }

which is working fine. I want to add within that same "if" the other block of conditions. I tried this, but it's not working:

if (
        (Get-WmiObject –ComputerName $poste –Class Win32_ComputerSystem).UserName`
        -and`
        (Get-WmiObject -Computer $poste -Class Win32_OperatingSystem).Version -like "*10*"`
        -or`
        (Get-WmiObject –ComputerName $poste –Class Win32_ComputerSystem).UserName`
        -and -not`
        (Get-Process -ErrorAction SilentlyContinue -ComputerName $poste -name logonui)


    )
    { echo do X }

How do you chain multiple "blocks" like this? I know I could do two different IF, I had it working but isn't there a way to chain it all together in one IF? (the IF contains a lot of code and i don't want to duplicate it with two IF)

Thanks a lot for your time!

Aucun commentaire:

Enregistrer un commentaire