]> git.ardis.lu - ArdisUtilities/commitdiff
Properly check for non-existent properties
authorArdis Lu <ardisglu@gmail.com>
Thu, 29 Aug 2024 03:41:32 +0000 (20:41 -0700)
committerArdis Lu <ardisglu@gmail.com>
Thu, 29 Aug 2024 03:41:32 +0000 (20:41 -0700)
In strict mode, accessing a non-existent property throws an error instead of returning $null.

ArdisUtilities/ArdisUtilities.psm1

index be53235229cce3e8a30a19459f080e42fb8a950c..3d08e8b886c3c012e8187fcb0f2c0a22bcbbd528 100644 (file)
@@ -767,47 +767,65 @@ function Get-HelpAsMarkdown {
 
   process {
     $help = Get-Help $Cmdlet
+    $properties = $help.PSobject.Properties.Name
 
-    $output.Add("# $($help.Name)") # Using .Name instead of $Cmdlet will use the capitalization intended by the cmdlet author
+    if ($properties -contains 'Name') {
+      $output.Add("# $($help.Name)") # Using .Name instead of $Cmdlet will use the capitalization intended by the cmdlet author
+    }
 
-    $output.Add('```')
-    $output.Add($($help.syntax | Out-String -NoNewline))
-    $output.Add('```')
+    if ($properties -contains 'syntax') {
+      $output.Add('```')
+      $output.Add($($help.syntax | Out-String -NoNewline))
+      $output.Add('```')
+    }
 
-    $output.Add('## Synopsis')
-    $output.Add($help.Synopsis)
+    if ($properties -contains 'Synopsis') {
+      $output.Add('## Synopsis')
+      $output.Add($help.Synopsis)
+    }
 
-    $output.Add('## Description')
-    $output.Add($($help.description | Out-String -NoNewline))
+    if ($properties -contains 'description') {
+      $output.Add('## Description')
+      $output.Add($($help.description | Out-String -NoNewline))
+    }
 
-    $output.Add('## Parameters')
-    foreach ($parameter in $help.parameters.parameter | Where-Object { $_.Name -notin $commonParameters }) {
-      $output.Add("### -$($parameter.Name)")
-      $output.Add($($parameter.Description | Out-String -NoNewline))
-      $output.Add('```yaml')
-      $output.Add("Type: $($parameter.Type.Name)")
-      $output.Add("Required: $($parameter.Required)")
-      $output.Add("Position: $($parameter.Position)")
-      $output.Add("Default value: $($parameter.DefaultValue)")
-      $output.Add("Accept pipeline input: $($parameter.PipelineInput)")
-      $output.Add('```')
+    if ($properties -contains 'parameters') {
+      $output.Add('## Parameters')
+      foreach ($parameter in $help.parameters.parameter | Where-Object { $_.Name -notin $commonParameters }) {
+        $output.Add("### -$($parameter.Name)")
+        $output.Add($($parameter.Description | Out-String -NoNewline))
+        $output.Add('```yaml')
+        $output.Add("Type: $($parameter.Type.Name)")
+        $output.Add("Required: $($parameter.Required)")
+        $output.Add("Position: $($parameter.Position)")
+        $output.Add("Default value: $($parameter.DefaultValue)")
+        $output.Add("Accept pipeline input: $($parameter.PipelineInput)")
+        $output.Add('```')
+      }
     }
     
-    $output.Add('## Examples')
-    $counter = 1
-    foreach ($example in $help.examples.example) {
-      $output.Add("### Example $counter")
-      $output.Add('```powershell')
-      $output.Add("PS> $($example.Code)")
-      $output.Add($(($example.Remarks | Out-String).TrimEnd()))
-      $output.Add('```')
-      $counter++
+    if ($properties -contains 'examples') {
+      $output.Add('## Examples')
+      $counter = 1
+      foreach ($example in $help.examples.example) {
+        $output.Add("### Example $counter")
+        $output.Add('```powershell')
+        $output.Add("PS> $($example.Code)")
+        $output.Add($(($example.Remarks | Out-String).TrimEnd()))
+        $output.Add('```')
+        $counter++
+      }
     }
 
-    if ($null -ne $help.relatedLinks) {
+    if ($properties -contains 'relatedLinks') {
       $output.Add('## Related Links')
       foreach ($link in $help.relatedLinks.navigationLink) {
-        $text = $link.linkText ?? $link.uri
+        if ('linkText' -in $link.PSobject.Properties.Name) {
+          $text = $link.linkText
+        }
+        else {
+          $text = $link.uri
+        }
         $output.Add("- $($text)")
       }
     }
This page took 0.037715 seconds and 4 git commands to generate.