Public/Install-PsmDependencies.ps1
function Install-PsmDependencies { <# .Synopsis A function that installs the current module's dependencies .DESCRIPTION A function that installs the current module's dependencies .EXAMPLE Install-PsmDependencies #installs all RequiredModules in psd1 file Install-PsmDependencies "BitLocker" #installs bitlocker and adds to RequiredModules #> [CmdletBinding(SupportsShouldProcess=$true)] param( [Parameter( Mandatory=$false, ValueFromPipeline=$true, ValueFromPipelineByPropertyName=$true)] [string]$Name ) BEGIN{ Write-Verbose "Starting Install-PsmDependencies..." throw "This just isn't going to work... yet..." Confirm-IsInitializedModulePath $packageXml = Import-CliXml .\module-psd1.xml }#begin PROCESS{ if ($psCmdlet.ShouldProcess(<# on target --> #>"$($packageXml.RootModule)", <# What if: Performing operation --> #>"Installing required module(s)")) { $dependency = Get-Module -ListAvailable *$Name* | Select-Object -First 1 if ($dependency -and ($dependency | Measure-Object).Count -gt 0) { Install-Module -Name $dependency.ModuleName -RequiredVersion $dependency.ModuleVersion -Force $packageXml.RequiredModules += $dependency $packageXml | Export-CliXml .\module-psd1.xml Write-Verbose "Added dependency $dependency to module-psd1.xml" } else { $packageXml.RequiredModules | Foreach-Object { Install-Module -Name $_.ModuleName -RequiredVersion $_.ModuleVersion -Force Write-Verbose "Installed $($_.ModuleName) @ Version: $($_.ModuleVersion)" } } } }#process END{ Write-Verbose "Finished Install-PsmDependencies..." }#end } |