Overblog Tous les blogs Top blogs Technologie & Science Tous les blogs Technologie & Science
Editer l'article Suivre ce blog Administration + Créer mon blog
MENU

NewAttribToApp

Publié le par damcuvelier

To add an attribute to sccm app for admin info or for information for automatisation to be hidden to whoever

 

<# Usage: NewAttribToApp -AppName "<App Name>" -NewInfos "<attrib Name>:<Answers>" -PM "<MP FQDN>"
# exemple:
$AppName = "Nom_de_votre_application"
$ProviderMachineName = "SCCMMP.domain.com" # SMS Provider machine name
$NewAttribName = "AnswersGene"
NewAttribToApp -AppName $AppName -NewInfos "AnswersGene:PMN=toto;PRD=GRP_App_PRD_TITI;Logfile=C:\TEMP\LOGFILENAME-USER-DATE.LOG" -PM $ProviderMachineName
getAttribFromApp -AppName $AppName -AttribInfo $NewAttribName -PM $ProviderMachineName
#>

function log4script{
param($val)
write-host $val
}

function connexCM($PM){
$ici = (get-location).path
SetLocationVars
set-location $here

# Customizations
$initParams = @{}
$initParams.Add("Verbose", $false) # Disable verbose logging
$initParams.Add("ErrorAction", "silentlycontinue") # Unstop the script on any errors

# Import the ConfigurationManager.psd1 module 
$CmModulePath = (get-childitem -path (Split-Path -Path $env:SMS_ADMIN_UI_PATH -Parent) | Where-Object{$_.name -match "ConfigurationManager.psd1"}).fullName
if((Get-Module ConfigurationManager) -eq $null) {Import-Module $CmModulePath @initParams}

# Get the site's drive location
[string]$SCCMDrive = (Get-PSDrive -PSProvider CMSite | Where-Object { $_.Root -match $PM }).Name

# If Update ConfigurationManager Module CmdLets:
# if($SCCMDrive){Update-Help -Module ConfigurationManager}

set-location $ici
return $SCCMDrive
}

function SetLocationVars{
$thisscriptLocation = $PSScriptRoot
if(!$thisscriptLocation){$thisscriptLocation = (Get-Location).path}
if(!$here){$Global:here = $thisscriptLocation}
if(!$CMDrive){$Global:CMDrive = connexCM($PM)}
}

function getAttribFromApp{
param($AppName,$AttribInfo,$PM)
# $AppName = "Nom_de_votre_application"
# $AttribInfo = "Nom de l'attribut complémentaire"
$ici = (get-location).path
SetLocationVars
set-location $CMDrive

# Obtenir l'application
$App = Get-CMApplication -Name $AppName

# Obtenir le contenu de l'attribut personnalisé pour l'application
$AppAttribInfo = $App.$AttribInfo
if($AppAttribInfo){
    log4script -val "La valeur de l'attribut personnalise pour $AppName ""$AttribInfo=$AttribInfo"""
    $result = $AppAttribInfo
} else {$result = $null}

return $result
set-location $ici
}

function NewAttribToApp{
param($AppName,$NewInfos,$PM)
# $AppName = "Nom_de_votre_application"
# $NewInfos = "Informations complémentaires pour automatisation"
$ici = (get-location).path
SetLocationVars
set-location $here
$NewAttribName = $NewInfos.split(':')[0]
$NewAttribValue = $NewInfos.split(':')[1]

set-location $CMDrive

# Obtenir l'application
$App = Get-CMApplication -Name $AppName

    # Mettre à jour l'attribut personnalisé pour l'application
    # if($App.Answers){
        # $AppAnswers = $App.Answers
        # $App.Answers = "$AppAnswers|$NewAttribValue"
    # } else { $App.Answers = $NewAttribValue }

    $AppNewAttrib = getAttribFromApp -AppName $AppName -AttribInfo $NewAttribName -PM $PM
    if($AppNewAttrib){$App.Answers = "$AppNewAttrib|$NewAttribValue"}else{$App.Answers = $NewAttribValue}

    # Sauvegarder les modifications
    Set-CMApplication -InputObject $App
    log4script -val "La valeur de l'attribut personnalise ""Answers=$NewAttribValue"" a ete ajoutee à l'application avec succes."

set-location $ici
}

Commenter cet article