MSEndpointMgr / IntuneWin32App

Provides a set of functions to manage all aspects of Win32 apps in Microsoft Intune.
MIT License
345 stars 88 forks source link

Allow empty or null arguments for Add-IntuneWin32App #86

Open badlogin opened 1 year ago

badlogin commented 1 year ago

Could you please consider allowing passing empty or null arguments to Add-IntuneWin32App. Like insignificant information fields URLs, Notes, Owner, Publisher and so on? If I pass a table with all predefined values and some are empty it throws an error instead of just leaving them blank in Intune just like they are not specified at all.

$properties = @{
    DisplayName = "Cisco Webex Meetings Virtual Desktop Plug-in"
    AppVersion = "43.2.1.18"
    InformationURL = "https://www.webex.com"
    PrivacyURL = ""
    InstallCommandLine= 'msiexec /i "webexvdi.msi" /q'
    UninstallCommandLine = "msiexec /x {AFAC244D-8C3C-D9B1-F84A-85DD994848EA} /q"
    Developer= ""
    InstallExperience= "system"
    Description= "Cisco Webex Meetings Virtual Desktop Plug-in"
    Owner= ""
    RestartBehavior= "suppress"
    ReturnCode= $ReturnCodes
    Publisher= "Cisco Systems, Inc."
    Notes= ""
    DetectionRule= $DetectionRule
    RequirementRule = $RequirementRule
    Icon= ""
}
Add-IntuneWin32App @properties -Verbose -UseAzCopy
AlkHacNar commented 1 year ago

doesn't it work, if you just let them out of the script? Cause if you declare them in the properties, then it try to use them and intune just don't seem to work with empty vars via api

CodyRWhite commented 1 year ago

This is how I worked around it. I put the required items into a hashtable, and then use if statements to build out the optional items.

 #region App Information
    Write-Verbose -Message "Preparing package app information"
    $AppParams = @{          
      "DisplayName" = $BuildAppInfo.DisplayName # Required
      "Description" = $BuildAppInfo.Description # Required          
    }

    IF ($BuildAppInfo.Publisher) { $AppParams.add("Publisher", $BuildAppInfo.Publisher) } # Not required, default [String]::empty
    IF ($BuildAppInfo.DisplayVersion) { $AppParams.add("AppVersion", $BuildAppInfo.DisplayVersion) } # Not Required, default [String]::empty
    IF ($BuildAppInfo.Category) { $AppParams.add("CategoryName", $BuildAppInfo.Category) } #Options: "Other Apps", "Books & Reference", "Data Management", "Productivity", "Business", "Development & Design", "Photos & Media", "Collaboration & Social", "Computer Management"
    IF ($BuildAppInfo.CompanyPortalFeaturedApp) { $AppParams.add("CompanyPortalFeaturedApp", $BuildAppInfo.CompanyPortalFeaturedApp) } # Not required, default false
    IF ($BuildAppInfo.InformationURL) { $AppParams.add("InformationURL", $BuildAppInfo.InformationURL) } # Not required, default [String]::empty
    IF ($BuildAppInfo.PrivacyURL) { $AppParams.add("PrivacyURL", $BuildAppInfo.PrivacyURL) } # Not required, default [String]::empty
    IF ($BuildAppInfo.Developer) { $AppParams.add("Developer", $BuildAppInfo.Developer) } # Not required, default [String]::empty
    IF ($BuildAppInfo.Owner) { $AppParams.add("Owner", $BuildAppInfo.Owner) } # Not required, default [String]::empty
    IF ($BuildAppInfo.Notes) { $AppParams.add("Notes", $BuildAppInfo.Notes) } # Not required, default [String]::empty
    IF ($Icon) { $AppParams.add("Icon", $Icon) } # Not required, validated null or empty       
    #endregion App Information