Functions/StreamDeck/Add-StreamDeckProfile.ps1
function Add-StreamDeckProfile { <# .Synopsis Adds StreamDeck Actions to profiles. .Description Adds a StreamDeck action to a profile. .Example @( New-StreamDeckAction -Title "Select Next Line" -HotKey "SHIFT+DOWN" New-StreamDeckAction -Title "Select Prev Line" -HotKey "SHIFT+UP" ) | Add-StreamDeckProfile -ProfileName ISE_XL .Link New-StreamDeckAction .Link Get-StreamDeckAction .Link Get-StreamDeckProfile #> [CmdletBinding(SupportsShouldProcess)] param( # The name of one or more profiles [Parameter(Mandatory)] [string[]] $ProfileName, # The root directory to look for profiles. [string] $ProfileRoot, # The row the action will be added to. If a negative number is provided, will choose the first available row. [Parameter(ParameterSetName='Profile',ValueFromPipelineByPropertyName)] [int] $Row = -1, # The column the action will be added to. If a negative number is provided, will choose the first available column. [Parameter(ParameterSetName='Profile',ValueFromPipelineByPropertyName)] [int] $Column = -1, # The action to add to a StreamDeck profile. # This is created using New-StreamDeckAction. [Parameter(Mandatory,ParameterSetName='Profile',ValueFromPipelineByPropertyName,ValueFromPipeline)] [PSTypeName('StreamDeck.Action')] [PSObject] $Action ) begin { $sdProfiles = Get-StreamDeckProfile -ProfileRoot $ProfileRoot | Where-Object Name -In $ProfileName if (-not $sdProfiles) { Write-Error "StreamDeck Profile $ProfileName not found" } } process { #region Add Actions to Profiles foreach ($prof in $sdProfiles) { if ($PSCmdlet.ShouldProcess("Add Action at $row, $column")) { $prof.AddAction($Action, $Row, $Column) $prof.Save() } } #endregion Add Actions to Profiles } } |