Inedo Community Forums Forums
    • Recent
    • Tags
    • Popular
    • Login

    Welcome to the Inedo Forums! Check out the Forums Guide for help getting started.

    If you are experiencing any issues with the forum software, please visit the Contact Form on our website and let us know!

    PSEnsure using Map Expression (Hash Table)

    Scheduled Pinned Locked Moved Support
    otter
    5 Posts 2 Posters 6 Views
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • Jonathan.EngstromJ Offline
      Jonathan.Engstrom
      last edited by

      Hello,

      I am using a PSensure to collect the information. I have a map expression configured on the server variable as to to check for disk labels:
      %DiskLabel %(C: OSDisk, D: DataDisk1)

      And this runs in a role to collect for each server it is assigned to:
      ##AH:UseTextMode

      ## Ensure Disk Label configuration
      PSEnsure
      (
          Key: Disk Label Check,
          Value: True,
          Collect: >>
              $ServerVariable = $DiskLabel
              $Disks = Get-WmiObject -Class Win32_LogicalDisk -Filter "DriveType=3"
              $ServerVariable.GetEnumerator() |ForEach-Object {  if ( ($Disks.DeviceID).Replace(':','') -contains ("$($_.Key)")) { $y = $disks | Where-Object -Property DeviceID -match $_.Key; $y.VolumeName -eq $($_.Value) }}
          >>,
          Configure: >>
              write-output "The fix is in"
          >>
      );
      

      But when it collects, even though the values are both true, it reports as drift. Ideas?

      Product: Otter
      Version: 2.0.10

      1 Reply Last reply Reply Quote 0
      • ? This user is from outside of this forum
        Guest
        last edited by

        What is the output of your log?

        I think this will always report drift, because in all cases your Collect script will return an array of unknown length (number od drives), where as your Value is always a scalar (true).

        1 Reply Last reply Reply Quote 0
        • ? This user is from outside of this forum
          Guest
          last edited by

          The output is the following:

          ServerCheckout_DiskLabelCheck

          Ensure $ServerVariable = $DiskLabel $Disks = Get-WmiObject -Class Win3 using PowerShell

          DEBUG: Collecting configuration...
          DEBUG: Importing DiskLabel...
          DEBUG: Comparing configuration...
          DEBUG: Difference: Value
          DEBUG: =Template=> True
          DEBUG: = Actual => True, True
          INFO: Configuration drift detected.
          DEBUG: Adding to execution plan.

          1 Reply Last reply Reply Quote 0
          • ? This user is from outside of this forum
            Guest
            last edited by

            Yes, you can see that the values aren't the same, so there's drift. "True" is not "True, True".

            You'll need to change your PS to only return a scalar/Boolean (i.e. "True"), not an array of values.

            1 Reply Last reply Reply Quote 0
            • ? This user is from outside of this forum
              Guest
              last edited by

              Since I wanted all of my values in the array to be true to have success in my PSEnsure I thought of different ways I could do this. I settled on counting the items in the array, and using the fact that $true -eq 1 and $false -eq 0 to build a value that should match the count. I added this to the end:

              $array.ForEach({if ($) {$val += $}})

              $array.Count -eq $val

              Thanks for your help!

              1 Reply Last reply Reply Quote 0

              Hello! It looks like you're interested in this conversation, but you don't have an account yet.

              Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

              With your input, this post could be even better 💗

              Register Login
              • 1 / 1
              • First post
                Last post
              Inedo Website Home • Support Home • Code of Conduct • Forums Guide • Documentation