• Recent
    • Unsolved
    • Tags
    • Popular
    • Users
    • Groups
    • Search
    • Register
    • Login

    fog API powershell help

    Scheduled Pinned Locked Moved
    General
    fogapi-psmodule
    2
    7
    766
    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.
    • J
      Jamaal
      last edited by JJ Fullmer

      @jj-fullmer or someone also that’s working on API

      Hello, all,parameter not recognized.PNG

      Thanks for the fog api notes, appreciate you helping us out. I’m not sure if you remembered me, but have a few questions.

      I’m trying to do 2 things. One to assign a group to a machine one created in fog via powershell. I tried get-foggroupbyname, but says the parameter is not recognized.parameter not recognized.

      It then told me to go to c:\program files… until I got to fogapi.psm1

      I copied and pasted the command for cmdletBinding.

      It didn’t error out, but didn’t return anything. Ex; , I know I created a Sales group in the Fog Gui with snapins assigned to it, so I wanted the machine to be assigned to that group to make it more dynamic. Please see attached pics. I’ll keep trying as well on my side. I’m so so on Powershell, but came a long way.parameter

      1 Reply Last reply Reply Quote 0
      • J
        Jamaal
        last edited by

        Ok, I think I got this figured out just now.
        Thanks to you jj, I followed your example from your original link:

        https://forums.fogproject.org/topic/12026/powershell-api-module/11

        So far I got this to work on one host: Here’s what I did by using your script:

        $newAssocs = New-Object System.Collections.Generic.List[object];
        $computer = (get-foghost -hostname “itloaner”).id
        $groups = (get-fogobject -type object -coreobject group).groups | where-object name -eq “sales”
        $groupAssocs = Get-FogObject -Type Object -CoreObject groupassociation

        $json = @{
        “hostID”=$computer;
        “groupID”=“$($groups.id)”;
        } | ConvertTo-Json;
        # Note, when creating the json splat and then piping it to convertto-json you must encapsulate properties and values in quotes and match the case of the original property (i.e. ID instead of Id) as in this example or it won’t parse right and will return a 417 error from the api

        $result = New-FogObject -type object -coreObject groupassociation -jsonData $json;
        $NewAssocs.Add($result);

        #list the newassocs that added the laptops to your group
        $NewAssocs;

        It then showed up as it added as per the results attached in this message.test1.PNG

        For further proof, I went to my test host and verified it was added via the new-fogobject command. I’m starting to understand now how this works. I just need to keep playing around with it and should be good going forward.

        My next task is to try to create a task via powershell to get the inventory of the machine before deploying the image. If you know of any commands, please let me know and I’ll keep trying myself as well.

        Again thanks for the info.

        JJ FullmerJ 1 Reply Last reply Reply Quote 1
        • JJ FullmerJ
          JJ Fullmer Testers @Jamaal
          last edited by

          @jamaal I have a function for inventory here https://fogapi.readthedocs.io/en/latest/commands/Get-FogInventory/
          It gets the same inventory information via powershell and adds it to fog.
          I can also help you with queuing the native inventory task, but that might be a bit trickier. I think you can schedule more than one task for a machine when it’s a scheduled task, but I’m not sure.

          Glad I had the code for get-foggroups somewhere to be found. It looks like something weird happened to the get-foggroups function and all the code disappeared from it. I’ll need to get that fixed as soon as I can as that function is used all over the place. I have made an issue for it https://github.com/darksidemilk/FogApi/issues/3

          Have you tried the FogApi powershell module? It's pretty cool IMHO
          https://github.com/darksidemilk/FogApi
          https://fogapi.readthedocs.io/en/latest/
          https://www.powershellgallery.com/packages/FogApi
          https://forums.fogproject.org/topic/12026/powershell-api-module

          J JJ FullmerJ 2 Replies Last reply Reply Quote 0
          • J
            Jamaal @JJ Fullmer
            last edited by

            @jj-fullmer said in fog API powershell help:

            @jamaal I have a function for inventory here https://fogapi.readthedocs.io/en/latest/commands/Get-FogInventory/
            It gets the same inventory information via powershell and adds it to fog.
            I can also help you with queuing the native inventory task, but that might be a bit trickier. I think you can schedule more than one task for a machine when it’s a scheduled task, but I’m not sure.

            Glad I had the code for get-foggroups somewhere to be found. It looks like something weird happened to the get-foggroups function and all the code disappeared from it. I’ll need to get that fixed as soon as I can as that function is used all over the place. I have made an issue for it https://github.com/darksidemilk/FogApi/issues/3

            Thanks jj, appreciate it. And another question. So I read in the fog forums and also the general fog page that snapins for groups don’t function, correct? I created a group called sales and when I added snapins to it, they never stayed. I then started reading up on it and said the groups only serve mostly as a category for naming& imaging purposes.

            It would be create if there was a way to add snapins to groups so when the other technicians use Microsoft Forms for example, they select which group the pc will go to and then the pc will automatically have all the snapins.

            If somehow that gets done in future, please let me know. Or do you know of a powershell command to add multiple snapins at once? Ex; the tech would click on the checkbox on Microsoft Form for more than one snapin, so I need to create a powershell statement to group more than one snapin.

            JJ FullmerJ 1 Reply Last reply Reply Quote 0
            • JJ FullmerJ
              JJ Fullmer Testers @Jamaal
              last edited by

              @jamaal I created my own infrastructure to handle this. It was not a simple process, but it works pretty well.
              I have what I call profile packages for each department, we use chocolatey for that and each one has a snapin.
              I have a powershell module for provisioning. I use sysprep/unattend firstlogoncommands to trigger its start and then it goes through a series of commands and restarts amongst that I have it use the api to get the fog group a host is in and then it adds the associated snapin that I associate through code and file structure.
              Once you get that far you can add a list of snapins to a host, deploy them, and then remove them (so the host remains ready to be deployed in a different department without having to remove old snapins) all with the api.

              Check out

              • Set-fogsnapins for setting a list of snapins to a host https://fogapi.readthedocs.io/en/latest/commands/Set-FogSnapins/
                (I just noticed I forgot to remove the $dept parameter in that function, that was for my internal use, you can just ignore it)
              • Start-FogSnapins for starting the deploy all snapins task on a host
                https://fogapi.readthedocs.io/en/latest/commands/Start-FogSnapins/
              • Remove-FogObject for removing the snapins from a host, looks like I haven’t published a helper function for removing the snapins just yet.
                https://fogapi.readthedocs.io/en/latest/commands/Remove-FogObject/
                • here’s an example of how you would remove the snapins. To remove them you have to remove the snapinassociation object.
              #create a list/array of the snapins you want to remove
              $snapinsToRemove = @('snapin','names','here'); 
              
              #get all the snapin associaion objects
              $AllAssocs = (Get-FogObject -type object -coreObject snapinassociation).snapinassociations
              
              # Get the snapins associated with your host
              $AllHostSnapins = Get-FogAssociatedSnapins -hostId $hostID;
              
              #get the ids of the snapins you want to remove, from the list of snapins attached to your host.
              $snapinIds = ($AllHostSnapins | Where-Object name -in $snapinsToRemove).id
              
              #Get a list of the snapinassociation ids that match your host id and are in the list of snapin ids attached to your host
              $assocsToRemove = $allAssocs | Where-Object { $_.hostID -eq $hostID -AND $_.snapinID -in $snapinIds}
              
              # loop through the found associations and remove them
              $assocsToRemove | ForEach-Object {
                  Remove-FogObject -type object -coreObject snapinassociation -IDofObject $_.id;
              }
              

              I believe there is also a fog plugin for persistent groups that can do more of what you describe natively in fog.

              Granted, I will need to get the get-foggroups function fixed for some of this to work properly. Maybe I’ll have some time this weekend.

              Have you tried the FogApi powershell module? It's pretty cool IMHO
              https://github.com/darksidemilk/FogApi
              https://fogapi.readthedocs.io/en/latest/
              https://www.powershellgallery.com/packages/FogApi
              https://forums.fogproject.org/topic/12026/powershell-api-module

              J 1 Reply Last reply Reply Quote 0
              • J
                Jamaal @JJ Fullmer
                last edited by

                @jj-fullmer said in fog API powershell help:

                $snapinsToRemove = @(‘snapin’,‘names’,‘here’);

                That’s what I needed, an array to choose from a list. Thank you so much! Really appreciate you on helping me on this.

                1 Reply Last reply Reply Quote 1
                • JJ FullmerJ
                  JJ Fullmer Testers @JJ Fullmer
                  last edited by

                  @Jamaal
                  @jj-fullmer said in fog API powershell help:

                  Glad I had the code for get-foggroups somewhere to be found. It looks like something weird happened to the get-foggroups function and all the code disappeared from it. I’ll need to get that fixed as soon as I can as that function is used all over the place. I have made an issue for it https://github.com/darksidemilk/FogApi/issues/3

                  I just published a new version of the module fixing the issue with get-foggroups and subsequently get-foggroupsbyname if you update to the new version 2103.2.12 those functions should work now.

                  Have you tried the FogApi powershell module? It's pretty cool IMHO
                  https://github.com/darksidemilk/FogApi
                  https://fogapi.readthedocs.io/en/latest/
                  https://www.powershellgallery.com/packages/FogApi
                  https://forums.fogproject.org/topic/12026/powershell-api-module

                  1 Reply Last reply Reply Quote 0
                  • 1 / 1
                  • First post
                    Last post

                  196

                  Online

                  12.0k

                  Users

                  17.3k

                  Topics

                  155.2k

                  Posts
                  Copyright © 2012-2024 FOG Project