Overblog
Editer l'article Suivre ce blog Administration + Créer mon blog

AddAppBundle.psm1

Publié le par damcuvelier

function FQDN($Domain){
$DomFQDN = (Get-ADDomain -Identity $Domain).DNSRoot

If(!$DomFQDN){
$rootDSE = New-Object DirectoryServices.DirectorySearcher([ADSI]"").searchroot
$searcher = New-Object DirectoryServices.DirectorySearcher
$searcher.SearchRoot = [ADSI]("LDAP://" + $rootDSE.distinguishedName)
$searcher.Filter = "(&(objectClass=crossRef)(dnsRoot=$Domain))"
$searcher.Properties.Add("nETBIOSName") | Out-Null
$searcher.Properties.Add("dnsRoot") | Out-Null
$domain = $searcher.FindOne()
if ($domain -ne $null) {
    $DomFQDN = $domain.Properties["dnsRoot"][0]
}
return $DomFQDN
}

function connex($MP){
# Importer le module SCCM
Import-Module "$($Env:SMS_ADMIN_UI_PATH)\..\ConfigurationManager.psd1"

# Récupérer le nom du lecteur pour le chemin spécifié
[string]$SCCMDrive = (Get-PSDrive | Where-Object { $_.Root -match $MP }).Name

$SCCMDrive = $SCCMDrive.replace('\','')
$SCCMDrive = "$SCCMDrive`:"
$SCCMDrive = $SCCMDrive.replace('::',':')

return $SCCMDrive

}

function AddAppBundle($MP,$Domain,$Apps,$ColName,$DepAct,$NomEnsemble){
$erroractionpreference = 'silentlycontinue'

# Recup FQDN
if(!$Domain){$Domain = $env:USERDOMAIN}
$Global:FQDN = FQDN($Domain)

# Définir les variables
$DescriptionEnsemble = "Ensemble d'applications $NomEnsemble, contenant: $Apps"
$Username = $env:Username
$SupportContact = $Username
if($MP -notmatch $Domain){$MP = ("$MP.$FQDN").replace('..','.')
if(!$DepAct){$DepAct = 'install'}

# Creation des locations
$Global:here = 'C:\'
$Global:CMDrive = connex($MP)

set-location $here

$ApplicationsArray = @()

# Parcourir les applications dans l'ordre souhaité
foreach ($App in $Apps.split(',')) {
set-location $CMDrive
    $ApplicationObject = Get-CMApplication -Name $App
    $ApplicationsArray += $ApplicationObject
}

set-location $CMDrive
$CMApplicationGroup = Get-CMApplicationGroup -Name $NomEnsemble

if($CMApplicationGroup){
set-location $here
$ActualSoftwareVersion = $CMApplicationGroup.SoftwareVersion
$VersionObjet = [System.Version]$ActualSoftwareVersion # Convertir en objet de version
$NouvelleVersionObjet = [System.Version]::new($VersionObjet.Major, $VersionObjet.Minor, $VersionObjet.Build + 1)
$SoftwareVersion = "$($NouvelleVersionObjet.Major).$($NouvelleVersionObjet.Minor).$($NouvelleVersionObjet.Build)" # Reformatter le résultat

set-location $CMDrive
Set-CMApplicationGroup -Name $NomEnsemble -AddApplication $ApplicationsArray -Description $DescriptionEnsemble -Publisher $FQDN -SoftwareVersion $SoftwareVersion -ReleaseDate (Get-Date) -AddOwner $Username -AddSupportContact $SupportContact -LocalizedAppGroupName $NomEnsemble

} else {
set-location $here
$SoftwareVersion = '1.0.0.1'
    
set-location $CMDrive
New-CMApplicationGroup -Name $NomEnsemble -AddApplication $ApplicationsArray -Description $DescriptionEnsemble -Publisher $FQDN -SoftwareVersion $SoftwareVersion -ReleaseDate (Get-Date) -AddOwner $Username -AddSupportContact $SupportContact -LocalizedAppGroupName $NomEnsemble
}

Start-CMApplicationDeployment -Name $NomEnsemble -DeployAction $DepAct -CollectionName $ColName
}

Commenter cet article