From 1eff43fe974a4b7fda6f57a5954b0d2252cd21a0 Mon Sep 17 00:00:00 2001 From: OCram85 Date: Fri, 22 Apr 2022 09:12:54 +0200 Subject: [PATCH 1/2] finalize post content --- content/posts/psmodulebase/index.md | 35 ++++++++++++++++------------- 1 file changed, 19 insertions(+), 16 deletions(-) diff --git a/content/posts/psmodulebase/index.md b/content/posts/psmodulebase/index.md index dd14edf..e1aef22 100644 --- a/content/posts/psmodulebase/index.md +++ b/content/posts/psmodulebase/index.md @@ -1,7 +1,7 @@ --- -title: 'PowerShell Module Base for Config Files' +title: 'How to get and use your PowerShell Module Base.' date: 2022-03-21T09:14:41+01:00 -draft: true +#draft: true categories: ['PowerShell'] tags: ['ModuleBase', 'config'] @@ -23,17 +23,19 @@ tags: ['ModuleBase', 'config'] ## 🖼️ Intro -Sometimes you want to use a basic config file for your module. This config file should be used to define basic -settings without any user specific content. This file could be placed into your PowerShell Module folder. +This article explains with a practical example how to determine and use the current module base path: + +Sometimes you want to use a basic config file for your module. This config file could be used to define basic +settings for your module. These module wide default settings should placed and shipped within your module. Therefore you can use the automatic variable `$MyInvocation`, especially with its properties `$MyInvocation.MyCommand.Module.ModuleBase`. This returns the full path to your current module base folder, which -can be used to join a path for your config file. +can be used by your function to join a path for your config file. ## 📑 `.\config.psd1` config file Let's assume you start a new module and you need multiple config keys to work with. So you usually create a -json or powershell data based config file: +**JSON** or **P**ower**S**hell **D**ata format based config file: ```powershell { @@ -54,7 +56,7 @@ json or powershell data based config file: ## 🔎 `Get-ConfigValue` helper function Now you can use `$MyInvocation.MyCommand.Module.ModuleBase` with a helper function to parse the path to your config -file and return your needed values: +file and return your stored default values: ```powershell function Get-ConfigValue { @@ -62,14 +64,14 @@ function Get-ConfigValue { .SYNOPSIS Returns the value of a given config file key. - .PARAMETER ByKey + .PARAMETER FromKey Config file key. .OUTPUTS [string] .EXAMPLE - Get-ConfigValue -ByKey 'OutputLevel' + Get-ConfigValue -FromKey 'OutputLevel' .NOTES Private module helper function. Used by other function within your module. @@ -79,26 +81,27 @@ function Get-ConfigValue { [OutputType([string])] param ( [Parameter(Mandatory = $true, HelpMessage = 'Existing key from config file.')] - [string]$ByKey + [string]$FromKey ) begin { } process { + $ErrorActionPreference = 'Stop' $ModuleBase = $MyInvocation.MyCommand.Module.ModuleBase $ConfigFile = Join-Path -Path $ModuleBase -ChildPath 'config.psd1' if (Test-Path -Path $ConfigFile) { try { $Config = Import-PowerShellDataFile -Path $ConfigFile - Write-Output $Config.$ByKey + Write-Output $Config.$FromKey } catch { - Write-Error -Message $_.Exception.Message -ErrorAction Stop + Write-Error -Message $_.Exception.Message } } else { - Write-Error -Message 'Config file not found!' -ErrorAction 'Stop' + Write-Error -Message 'Config file not found!' } } @@ -108,12 +111,12 @@ function Get-ConfigValue { ## 💭 Final Thoughts -All you need to to is using the `Get-ConfigValue -ByKey ''` in your functions to get the any value +All you need to to is using the `Get-ConfigValue -FromKey ''` in your functions to get any value defined in you config file. As far as I know, that's the simplest way to get your module root and using it with a config file. {{< alert >}} -Keep in mind not to store any sensitive data in you config file. User specific data should also be stored in a user -context and not in a global module wide config. +Do not to store any sensitive data in you config file. User specific data should also be stored in a user +context and not in a global module wide config file. {{< /alert >}} -- 2.40.1 From 6e30b6308e5197beae3ada0e12597be98e820c3d Mon Sep 17 00:00:00 2001 From: OCram85 Date: Tue, 26 Apr 2022 09:15:46 +0200 Subject: [PATCH 2/2] fix typos --- content/posts/psmodulebase/index.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/content/posts/psmodulebase/index.md b/content/posts/psmodulebase/index.md index e1aef22..890a607 100644 --- a/content/posts/psmodulebase/index.md +++ b/content/posts/psmodulebase/index.md @@ -1,5 +1,5 @@ --- -title: 'How to get and use your PowerShell Module Base.' +title: 'How to get your PowerShell Module Base root path' date: 2022-03-21T09:14:41+01:00 #draft: true @@ -23,7 +23,7 @@ tags: ['ModuleBase', 'config'] ## 🖼️ Intro -This article explains with a practical example how to determine and use the current module base path: +This article explains with a practical example how to determine and use the current module base path. Sometimes you want to use a basic config file for your module. This config file could be used to define basic settings for your module. These module wide default settings should placed and shipped within your module. @@ -55,8 +55,8 @@ Let's assume you start a new module and you need multiple config keys to work wi ## 🔎 `Get-ConfigValue` helper function -Now you can use `$MyInvocation.MyCommand.Module.ModuleBase` with a helper function to parse the path to your config -file and return your stored default values: +Now you can use `$MyInvocation.MyCommand.Module.ModuleBase` with a helper function, to parse the path to your config +file, and return the stored default values: ```powershell function Get-ConfigValue { @@ -112,7 +112,7 @@ function Get-ConfigValue { ## 💭 Final Thoughts All you need to to is using the `Get-ConfigValue -FromKey ''` in your functions to get any value -defined in you config file. +defined in your config file. As far as I know, that's the simplest way to get your module root and using it with a config file. -- 2.40.1