|
<# 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