Problems with SCCM Path

This topic contains 0 replies, has 1 voice, and was last updated by Profile photo of Sascha Sascha 2 weeks, 2 days ago.

  • Author
    Posts
  • #74782
    Profile photo of Sascha
    Sascha
    Participant

    I'm trying to automate the creation of SCCM Device Collections.
    Now i made the following Script to do it. if i start the Script a GUI appears. if i choice $RadioButton1 everything works fine and at the End the Collection is moved after creation. So thats fine. But if i choice $RadioButton2 i get the message
    – Move-CMObject : FolderPath S01:\DeviceCollection\ESD\TRUST is invalid
    I Tryed to Use the same Path like on $RadioButton1 but the same error.

    If i manualy use the Collection ID like – Move-CMObject -FolderPath S01:\DeviceCollection\ESD\Test -ObjectId SMS00032 – it works.
    do you have an idea why it works so strange?
    Many thanks for your help.

    Here the Script:

    #Setting Up Variables
    $PBOuPath = "OU=Test,OU=SCCM Groups,OU=Groups,OU=AW,DC=Tst,DC=wrk"
    $PAOuPath = "OU=TRUST,OU=SCCM Groups,OU=Groups,OU=AW,DC=Tst,DC=wrk"
    $SecurityGroupQuery = "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.SecurityGroupName = 'AW\\AW_GG_SCCM_$CollectionName – INSTALL' "
    $SecurityGroupQueryUninst = "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.SecurityGroupName = 'AW\\AW_GG_SCCM_$CollectionName – UNINSTALL' "

    # A function to create the form
    function SCCM_Form{
    [void] [System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")
    [void] [System.Reflection.Assembly]::LoadWithPartialName("System.Drawing")

    # Set the size and titel of your form
    $Form = New-Object System.Windows.Forms.Form
    $Form.width = 500
    $Form.height = 300
    $Form.Text = ”Create a New SCCM Collection"

    # Set the font of the text to be used within the form
    $Font = New-Object System.Drawing.Font("Calibri",12)
    $Form.Font = $Font

    # Create a group that will contain your radio buttons
    $MyGroupBox = New-Object System.Windows.Forms.GroupBox
    $MyGroupBox.Location = '40,30'
    $MyGroupBox.size = '400,150'
    $MyGroupBox.text = "SCCM Collection"

    # Create the collection of radio buttons
    $RadioButton1 = New-Object System.Windows.Forms.RadioButton
    $RadioButton1.Location = '20,40'
    $RadioButton1.size = '350,20'
    $RadioButton1.Checked = $true
    $RadioButton1.Text = "New PB Collection"

    $RadioButton2 = New-Object System.Windows.Forms.RadioButton
    $RadioButton2.Location = '20,70'
    $RadioButton2.size = '350,20'
    $RadioButton2.Checked = $false
    $RadioButton2.Text = "New PA Collection"

    $RadioButton3 = New-Object System.Windows.Forms.RadioButton
    $RadioButton3.Location = '20,100'
    $RadioButton3.size = '350,20'
    $RadioButton3.Checked = $false
    $RadioButton3.Text = "New MS Collection"

    # Add an OK button
    $OKButton = new-object System.Windows.Forms.Button
    $OKButton.Location = '130,200'
    $OKButton.Size = '100,40'
    $OKButton.Text = 'OK'
    $OKButton.DialogResult=[System.Windows.Forms.DialogResult]::OK

    #Add a cancel button
    $CancelButton = new-object System.Windows.Forms.Button
    $CancelButton.Location = '255,200'
    $CancelButton.Size = '100,40'
    $CancelButton.Text = "Cancel"
    $CancelButton.DialogResult=[System.Windows.Forms.DialogResult]::Cancel

    # Add all the Form controls on one line
    $form.Controls.AddRange(@($MyGroupBox,$OKButton,$CancelButton))

    # Add all the GroupBox controls on one line
    $MyGroupBox.Controls.AddRange(@($Radiobutton1,$RadioButton2,$RadioButton3))

    # Assign the Accept and Cancel options in the form to the corresponding buttons
    $form.AcceptButton = $OKButton
    $form.CancelButton = $CancelButton

    # Activate the form
    $form.Add_Shown({$form.Activate()})

    # Get the results from the button click
    $dialogResult = $form.ShowDialog()

    # If the OK button is selected
    if ($dialogResult -eq "OK"){

    # Check the current state of each radio button and respond accordingly
    if ($RadioButton1.Checked){

    ##Start Funktion for PB
    ##Eingabefeld für dien Applikationsname
    [System.Reflection.Assembly]::LoadWithPartialName('Microsoft.VisualBasic') | Out-Null
    $CollectionName = [Microsoft.VisualBasic.Interaction]::InputBox("Enter the Name of The Application", "New Collection", "")

    #Create / Move Collection Test
    New-CMCollection -CollectionType Device -Name "$CollectionName – INSTALL" -LimitingCollectionName "All Systems"
    $InstallCollectionID = (Get-CMCollection -Name "$CollectionName – INSTALL" | Select-Object CollectionID).CollectionID

    New-CMCollection -CollectionType Device -Name "$CollectionName – UNINSTALL" -LimitingCollectionName "All Systems"
    $UninstallCollectionID = (Get-CMCollection -Name "$CollectionName – UNINSTALL" | Select-Object CollectionID).CollectionID

    Move-CMObject -FolderPath S01:\DeviceCollection\ESD\Test -ObjectId $InstallCollectionID
    Move-CMObject -FolderPath S01:\DeviceCollection\ESD\Test -ObjectId $UninstallCollectionID

    #Create / Move AD Group Test
    New-ADGroup -Path $TstOuPath -Name "AW_GG_SCCM_$CollectionName – INSTALL" -GroupScope Global
    New-ADGroup -Path $TstOuPath -Name "AW_GG_SCCM_$CollectionName – UNINSTALL" -GroupScope Global

    #Add Query to Collection Install
    Add-CMDeviceCollectionQueryMembershipRule -CollectionId $InstallCollectionID -RuleName SCCM_Query -QueryExpression $SecurityGroupQuery
    #Add Group Exclude Query to Collection Install
    Add-CMDeviceCollectionExcludeMembershipRule -CollectionId $InstallCollectionID -excludeCollectionId $UninstallCollectionID

    #Add Query to Collection Uninstall
    Add-CMDeviceCollectionQueryMembershipRule -CollectionId $UninstallCollectionID -RuleName SCCM_Query -QueryExpression $SecurityGroupQueryUninst

    }

    ##Stop Function for PB

    elseif ($RadioButton2.Checked)
    {

    #Connect to SCCM Server Import the module
    If (-not (Get-Module ConfigurationManager))
    {
    Write-Host “Configuration Manager not loaded, loading…”
    import-module ($Env:SMS_ADMIN_UI_PATH.Substring(0,$Env:SMS_ADMIN_UI_PATH.Length-5) + '\ConfigurationManager.psd1')
    $PSD = Get-PSDrive -PSProvider CMSite
    $SiteCode = $PSD.Name
    CD “$($PSD):”
    }

    ELSE
    {
    Write-Host “Configuration Manager Already Loaded”
    }

    ##Eingabefeld für dien Applikationsname
    [System.Reflection.Assembly]::LoadWithPartialName('Microsoft.VisualBasic') | Out-Null
    $CollectionName = [Microsoft.VisualBasic.Interaction]::InputBox("Enter the Name of The Application", "New Collection", "")

    #Connect to SCCM Server Drive
    New-PSDrive -Name „S01“ -PSProvider CMSite -Root „AWSRV20.art.wrk“

    #Create / Move Collection Test
    New-CMCollection -CollectionType Device -Name "$CollectionName – INSTALL" -LimitingCollectionName "All Systems"
    $InstallCollectionID = (Get-CMCollection -Name "$CollectionName – INSTALL" | Select-Object CollectionID).CollectionID

    ### New-CMCollection -CollectionType Device -Name "$CollectionName – UNINSTALL" -LimitingCollectionName "All Systems"
    ### $UninstallCollectionID = (Get-CMCollection -Name "$CollectionName – UNINSTALL" | Select-Object CollectionID).CollectionID

    Move-CMObject -FolderPath S01:\DeviceCollection\ESD\Test -ObjectId $InstallCollectionID
    ###Move-CMObject -FolderPath "S01:\Device Collections\TRUST\ESD" -ObjectId $UninstallCollectionID

    #Create / Move AD Group Test
    ### New-ADGroup -Path $PAOuPath -Name "AW_GG_SCCM_$CollectionName – INSTALL" -GroupScope Global
    ### New-ADGroup -Path $PAOuPath -Name "AW_GG_SCCM_$CollectionName – UNINSTALL" -GroupScope Global

    #Add Query to Collection Install
    ### Add-CMDeviceCollectionQueryMembershipRule -CollectionId $InstallCollectionID -RuleName SCCM_Query -QueryExpression $SecurityGroupQuery
    #Add Group Exclude Query to Collection Install
    ### Add-CMDeviceCollectionExcludeMembershipRule -CollectionId $InstallCollectionID -excludeCollectionId $UninstallCollectionID

    #Add Query to Collection Uninstall
    ### Add-CMDeviceCollectionQueryMembershipRule -CollectionId $UninstallCollectionID -RuleName SCCM_Query -QueryExpression $SecurityGroupQueryUninst

    }

    elseif ($RadioButton2.Checked)
    {

    write-Host "Test"
    }

    }
    }

    # Call the function
    SCCM_Form

You must be logged in to reply to this topic.