en-us/EzFirewallMgmt-help.xml

<?xml version="1.0" encoding="utf-8"?>
<helpItems schema="maml" xmlns="http://msh">
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Add-PortRule</command:name>
      <command:verb>Add</command:verb>
      <command:noun>PortRule</command:noun>
      <maml:description>
        <maml:para>Adds a port rule for blocking/unblockin</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>Mainly meant to be an internal function to avoid repeated code</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Add-PortRule</maml:name>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="1" aliases="none">
          <maml:name>port</maml:name>
          <maml:Description>
            <maml:para>The port or ports to control</maml:para>
          </maml:Description>
          <command:parameterValue required="true" variableLength="false">String[]</command:parameterValue>
          <dev:type>
            <maml:name>String[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="2" aliases="none">
          <maml:name>protocol</maml:name>
          <maml:Description>
            <maml:para>TCP,UDP, or BOTH</maml:para>
          </maml:Description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="3" aliases="none">
          <maml:name>type</maml:name>
          <maml:Description>
            <maml:para>Block or Unblock</maml:para>
          </maml:Description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="1" aliases="none">
        <maml:name>port</maml:name>
        <maml:Description>
          <maml:para>The port or ports to control</maml:para>
        </maml:Description>
        <command:parameterValue required="true" variableLength="false">String[]</command:parameterValue>
        <dev:type>
          <maml:name>String[]</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="2" aliases="none">
        <maml:name>protocol</maml:name>
        <maml:Description>
          <maml:para>TCP,UDP, or BOTH</maml:para>
        </maml:Description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="3" aliases="none">
        <maml:name>type</maml:name>
        <maml:Description>
          <maml:para>Block or Unblock</maml:para>
        </maml:Description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes />
    <command:returnValues />
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- Example 1 --------------------------</maml:title>
        <dev:code>PS C:\&gt; {{ Add example code here }}</dev:code>
        <dev:remarks>
          <maml:para>{{ Add example description here }}</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>Add-PortRule</maml:linkText>
        <maml:uri>https://EzFirewallMgmt.readthedocs.io/en/latest/commands/Add-PortRule</maml:uri>
      </maml:navigationLink>
      <maml:navigationLink>
        <maml:linkText>Block-PortRule</maml:linkText>
        <maml:uri>https://EzFirewallMgmt.readthedocs.io/en/latest/commands/Block-PortRule</maml:uri>
      </maml:navigationLink>
      <maml:navigationLink>
        <maml:linkText>Unblock-PortRule</maml:linkText>
        <maml:uri>https://EzFirewallMgmt.readthedocs.io/en/latest/commands/Unblock-PortRule</maml:uri>
      </maml:navigationLink>
      <maml:navigationLink>
        <maml:linkText>New-NetfirewallRule</maml:linkText>
        <maml:uri>https://docs.microsoft.com/en-us/powershell/module/netsecurity/New-NetfirewallRule</maml:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Add-ProgramRule</command:name>
      <command:verb>Add</command:verb>
      <command:noun>ProgramRule</command:noun>
      <maml:description>
        <maml:para>Adds program rules via pipe</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>Runs through the list of paths and makes the rules Mainly meant for internal use to avoid repeated code</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Add-ProgramRule</maml:name>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="1" aliases="none">
          <maml:name>paths</maml:name>
          <maml:Description>
            <maml:para>The list of paths generated during Block/Unblock-Program</maml:para>
          </maml:Description>
          <command:parameterValue required="true" variableLength="false">Object</command:parameterValue>
          <dev:type>
            <maml:name>Object</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="2" aliases="none">
          <maml:name>type</maml:name>
          <maml:Description>
            <maml:para>Block or Unblock, used to determin rule name and rule action</maml:para>
          </maml:Description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="3" aliases="none">
          <maml:name>count</maml:name>
          <maml:Description>
            <maml:para>{{ Fill count Description }}</maml:para>
          </maml:Description>
          <command:parameterValue required="true" variableLength="false">Object</command:parameterValue>
          <dev:type>
            <maml:name>Object</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="1" aliases="none">
        <maml:name>paths</maml:name>
        <maml:Description>
          <maml:para>The list of paths generated during Block/Unblock-Program</maml:para>
        </maml:Description>
        <command:parameterValue required="true" variableLength="false">Object</command:parameterValue>
        <dev:type>
          <maml:name>Object</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="2" aliases="none">
        <maml:name>type</maml:name>
        <maml:Description>
          <maml:para>Block or Unblock, used to determin rule name and rule action</maml:para>
        </maml:Description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="3" aliases="none">
        <maml:name>count</maml:name>
        <maml:Description>
          <maml:para>{{ Fill count Description }}</maml:para>
        </maml:Description>
        <command:parameterValue required="true" variableLength="false">Object</command:parameterValue>
        <dev:type>
          <maml:name>Object</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes />
    <command:returnValues />
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- EXAMPLE 1 --------------------------</maml:title>
        <dev:code>$paths | Add-ProgramRule</dev:code>
        <dev:remarks>
          <maml:para></maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>Add-ProgramRule</maml:linkText>
        <maml:uri>https://EzFirewallMgmt.readthedocs.io/en/latest/commands/Add-ProgramRule</maml:uri>
      </maml:navigationLink>
      <maml:navigationLink>
        <maml:linkText>Block-Program</maml:linkText>
        <maml:uri>https://EzFirewallMgmt.readthedocs.io/en/latest/commands/Block-Program</maml:uri>
      </maml:navigationLink>
      <maml:navigationLink>
        <maml:linkText>Unblock-Program</maml:linkText>
        <maml:uri>https://EzFirewallMgmt.readthedocs.io/en/latest/commands/Unblock-Program</maml:uri>
      </maml:navigationLink>
      <maml:navigationLink>
        <maml:linkText>Remove-ProgramRule</maml:linkText>
        <maml:uri>https://EzFirewallMgmt.readthedocs.io/en/latest/commands/Remove-ProgramRule</maml:uri>
      </maml:navigationLink>
      <maml:navigationLink>
        <maml:linkText>Get-ProgramRulename</maml:linkText>
        <maml:uri>https://EzFirewallMgmt.readthedocs.io/en/latest/commands/Get-ProgramRulename</maml:uri>
      </maml:navigationLink>
      <maml:navigationLink>
        <maml:linkText>New-NetfirewallRule</maml:linkText>
        <maml:uri>https://docs.microsoft.com/en-us/powershell/module/netsecurity/New-NetfirewallRule</maml:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Block-Port</command:name>
      <command:verb>Block</command:verb>
      <command:noun>Port</command:noun>
      <maml:description>
        <maml:para>Blocks a given port or list of ports</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>By default will create blocking rules for both tcp and udp versions of the port list given. Also creates blocks for both inbound and outbound. Returns a list of the rules created</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Block-Port</maml:name>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="none">
          <maml:name>port</maml:name>
          <maml:Description>
            <maml:para>The port or list of ports/port ranges to block</maml:para>
          </maml:Description>
          <command:parameterValue required="true" variableLength="false">String[]</command:parameterValue>
          <dev:type>
            <maml:name>String[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="2" aliases="none">
          <maml:name>protocol</maml:name>
          <maml:Description>
            <maml:para>Can be TCP, UDP, or BOTH defaults to Both</maml:para>
          </maml:Description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="none">
        <maml:name>port</maml:name>
        <maml:Description>
          <maml:para>The port or list of ports/port ranges to block</maml:para>
        </maml:Description>
        <command:parameterValue required="true" variableLength="false">String[]</command:parameterValue>
        <dev:type>
          <maml:name>String[]</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="2" aliases="none">
        <maml:name>protocol</maml:name>
        <maml:Description>
          <maml:para>Can be TCP, UDP, or BOTH defaults to Both</maml:para>
        </maml:Description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes />
    <command:returnValues />
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- EXAMPLE 1 --------------------------</maml:title>
        <dev:code>Block-Port -port "1433-1434"</dev:code>
        <dev:remarks>
          <maml:para>Will block tcp and udp ports 1433 through 1434 which would block incoming and outgoing mircosoft sql servers from being accessed over the network or even being browsed if they're using default ports The rule names would be `Block port 1433-1434 TCP inbound` `Block port 1433-1434 TCP outbound` `Block port 1433-1434 UDP inbound` `Block port 1433-1434 UDP outbound`</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>Block-Port</maml:linkText>
        <maml:uri>https://EzFirewallMgmt.readthedocs.io/en/latest/commands/Block-Port</maml:uri>
      </maml:navigationLink>
      <maml:navigationLink>
        <maml:linkText>Unblock-Port</maml:linkText>
        <maml:uri>https://EzFirewallMgmt.readthedocs.io/en/latest/commands/Unblock-Port</maml:uri>
      </maml:navigationLink>
      <maml:navigationLink>
        <maml:linkText>Get-PortRuleName</maml:linkText>
        <maml:uri>https://EzFirewallMgmt.readthedocs.io/en/latest/commands/Get-PortRuleName</maml:uri>
      </maml:navigationLink>
      <maml:navigationLink>
        <maml:linkText>Remove-PortRule</maml:linkText>
        <maml:uri>https://EzFirewallMgmt.readthedocs.io/en/latest/commands/Remove-PortRule</maml:uri>
      </maml:navigationLink>
      <maml:navigationLink>
        <maml:linkText>New-NetfirewallRule</maml:linkText>
        <maml:uri>https://docs.microsoft.com/en-us/powershell/module/netsecurity/New-NetfirewallRule</maml:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Block-Program</command:name>
      <command:verb>Block</command:verb>
      <command:noun>Program</command:noun>
      <maml:description>
        <maml:para>Blocks all exes found under parent folders matching a given name or Blocks all specific exes at given paths</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>When using -name will search programFiles/programfiles x86, current users local/roaming appdata, and the program data folder for folders that match the given name (using -match so doesn't need to be exact). Then finds all the exes in those paths and loops through that list of exes creating a Block rule for each one both inbound and outbound. If you instead specifiy a path or list of paths it will create Block rules only for the specified rules</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Block-Program</maml:name>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="none">
          <maml:name>name</maml:name>
          <maml:Description>
            <maml:para>The name of the program folder to match, will also be used in naming the rules</maml:para>
          </maml:Description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
      <command:syntaxItem>
        <maml:name>Block-Program</maml:name>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="named" aliases="none">
          <maml:name>path</maml:name>
          <maml:Description>
            <maml:para>The path or list of paths to exes to Block Can also be passed via pipeline as a FileInfo Object from Get-ChildItem or Get-ExePaths</maml:para>
          </maml:Description>
          <command:parameterValue required="true" variableLength="false">Object</command:parameterValue>
          <dev:type>
            <maml:name>Object</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>programName</maml:name>
          <maml:Description>
            <maml:para>The programName to use in rule names when specifying path(s). Will default to the basename (name without extension) of the first exe in the path list parameter</maml:para>
          </maml:Description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="none">
        <maml:name>name</maml:name>
        <maml:Description>
          <maml:para>The name of the program folder to match, will also be used in naming the rules</maml:para>
        </maml:Description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="named" aliases="none">
        <maml:name>path</maml:name>
        <maml:Description>
          <maml:para>The path or list of paths to exes to Block Can also be passed via pipeline as a FileInfo Object from Get-ChildItem or Get-ExePaths</maml:para>
        </maml:Description>
        <command:parameterValue required="true" variableLength="false">Object</command:parameterValue>
        <dev:type>
          <maml:name>Object</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>programName</maml:name>
        <maml:Description>
          <maml:para>The programName to use in rule names when specifying path(s). Will default to the basename (name without extension) of the first exe in the path list parameter</maml:para>
        </maml:Description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes />
    <command:returnValues />
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- EXAMPLE 1 --------------------------</maml:title>
        <dev:code>Block-Program -name "Steam"</dev:code>
        <dev:remarks>
          <maml:para>This will find all exe's in the steam program folders and Block them. This will also include all your downloaded steam game exes. A quick and easy way to make sure your multiplayer games are Blocked (because maybe you grounded your kid from video games) Each rule would be named as `Block program steam - exename.exe {inbound|outbound}`</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>-------------------------- EXAMPLE 2 --------------------------</maml:title>
        <dev:code>Block-Program -path "C:\Program Files\PowerShell\7\pwsh.exe"</dev:code>
        <dev:remarks>
          <maml:para>Will create rules to Block the powershell 7 exe. Since no name was provided the rule will be called `Block program pwsh - pwsh.exe {inbound|outbound}`</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>-------------------------- EXAMPLE 3 --------------------------</maml:title>
        <dev:code>Get-ExePaths "steam" | Where-Object BaseName -in "Borderlands3","Drawful 2" | Block-Program -programName "selectedSteam"</dev:code>
        <dev:remarks>
          <maml:para>Will find all the exe's in the steam program folders and filter it down to only the exe's with basenames of Borderlands3 and Drawful 2 then pipe those into the path param and create block rules for them with a programName of 'selectedSteam'. i.e. `Block program selectedSteam - Borderlands3.exe`</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>Block-Program</maml:linkText>
        <maml:uri>https://EzFirewallMgmt.readthedocs.io/en/latest/commands/Block-Program</maml:uri>
      </maml:navigationLink>
      <maml:navigationLink>
        <maml:linkText>Unblock-Program</maml:linkText>
        <maml:uri>https://EzFirewallMgmt.readthedocs.io/en/latest/commands/Unblock-Program</maml:uri>
      </maml:navigationLink>
      <maml:navigationLink>
        <maml:linkText>Get-ProgramRuleName</maml:linkText>
        <maml:uri>https://EzFirewallMgmt.readthedocs.io/en/latest/commands/Get-ProgramRuleName</maml:uri>
      </maml:navigationLink>
      <maml:navigationLink>
        <maml:linkText>Remove-ProgramRule</maml:linkText>
        <maml:uri>https://EzFirewallMgmt.readthedocs.io/en/latest/commands/Remove-ProgramRule</maml:uri>
      </maml:navigationLink>
      <maml:navigationLink>
        <maml:linkText>New-NetfirewallRule</maml:linkText>
        <maml:uri>https://docs.microsoft.com/en-us/powershell/module/netsecurity/New-NetfirewallRule</maml:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Get-ExePaths</command:name>
      <command:verb>Get</command:verb>
      <command:noun>ExePaths</command:noun>
      <maml:description>
        <maml:para>Gets the exe's of a matching program name</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>Searches through all common install directories for exes with a matching parent directory name</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Get-ExePaths</maml:name>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="none">
          <maml:name>name</maml:name>
          <maml:Description>
            <maml:para>The name to use when searching for exe's will be matched anywhere in the name</maml:para>
          </maml:Description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="none">
        <maml:name>name</maml:name>
        <maml:Description>
          <maml:para>The name to use when searching for exe's will be matched anywhere in the name</maml:para>
        </maml:Description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes />
    <command:returnValues />
    <maml:alertSet>
      <maml:alert>
        <maml:para>Uses a list collection object and get-childitem. Adds to the list at the of filtering with get child item so each item is a single entry in the list</maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- EXAMPLE 1 --------------------------</maml:title>
        <dev:code>Get-ExePaths -name "steam"</dev:code>
        <dev:remarks>
          <maml:para>Will return all exes in the steam program file and appdata folders</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>Get-ExePaths</maml:linkText>
        <maml:uri>https://EzFirewallMgmt.readthedocs.io/en/latest/commands/Get-ExePaths</maml:uri>
      </maml:navigationLink>
      <maml:navigationLink>
        <maml:linkText>Block-Program</maml:linkText>
        <maml:uri>https://EzFirewallMgmt.readthedocs.io/en/latest/commands/Block-Program</maml:uri>
      </maml:navigationLink>
      <maml:navigationLink>
        <maml:linkText>Unblock-Program</maml:linkText>
        <maml:uri>https://EzFirewallMgmt.readthedocs.io/en/latest/commands/Unblock-Program</maml:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Get-PortRuleName</command:name>
      <command:verb>Get</command:verb>
      <command:noun>PortRuleName</command:noun>
      <maml:description>
        <maml:para>Gets the name to use for given port rule</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>Takes the parameters to build a simple string for the base name of a rule. This is used when creating new rules and when removing them. You can also use this with `Get-NetFirewallRule -name` to get matching firewall rules Creates rule name strings with the structure `{$type} port {$port} {$protocol}`</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Get-PortRuleName</maml:name>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="none">
          <maml:name>type</maml:name>
          <maml:Description>
            <maml:para>Can be Block or Unblock</maml:para>
          </maml:Description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="2" aliases="none">
          <maml:name>port</maml:name>
          <maml:Description>
            <maml:para>The port or ports the rule controls</maml:para>
          </maml:Description>
          <command:parameterValue required="true" variableLength="false">String[]</command:parameterValue>
          <dev:type>
            <maml:name>String[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="3" aliases="none">
          <maml:name>protocol</maml:name>
          <maml:Description>
            <maml:para>Can be TCP or UDP</maml:para>
          </maml:Description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="none">
        <maml:name>type</maml:name>
        <maml:Description>
          <maml:para>Can be Block or Unblock</maml:para>
        </maml:Description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="2" aliases="none">
        <maml:name>port</maml:name>
        <maml:Description>
          <maml:para>The port or ports the rule controls</maml:para>
        </maml:Description>
        <command:parameterValue required="true" variableLength="false">String[]</command:parameterValue>
        <dev:type>
          <maml:name>String[]</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="3" aliases="none">
        <maml:name>protocol</maml:name>
        <maml:Description>
          <maml:para>Can be TCP or UDP</maml:para>
        </maml:Description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes />
    <command:returnValues />
    <maml:alertSet>
      <maml:alert>
        <maml:para>Append "*" to the return string to get or remove all matching rules as when they are created inbound or outbound is appended</maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- EXAMPLE 1 --------------------------</maml:title>
        <dev:code>Get-PortRuleName -type "Unblock" -port "135","1433-1434" -Protocol TCP</dev:code>
        <dev:remarks>
          <maml:para>Will create a string of "Unblock port 135,1433-1434 TCP".</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>Get-PortRuleName</maml:linkText>
        <maml:uri>https://EzFirewallMgmt.readthedocs.io/en/latest/commands/Get-PortRuleName</maml:uri>
      </maml:navigationLink>
      <maml:navigationLink>
        <maml:linkText>Remove-PortRule</maml:linkText>
        <maml:uri>https://EzFirewallMgmt.readthedocs.io/en/latest/commands/Remove-PortRule</maml:uri>
      </maml:navigationLink>
      <maml:navigationLink>
        <maml:linkText>Block-Port</maml:linkText>
        <maml:uri>https://EzFirewallMgmt.readthedocs.io/en/latest/commands/Block-Port</maml:uri>
      </maml:navigationLink>
      <maml:navigationLink>
        <maml:linkText>Unblock-Port</maml:linkText>
        <maml:uri>https://EzFirewallMgmt.readthedocs.io/en/latest/commands/Unblock-Port</maml:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Get-ProgramRuleName</command:name>
      <command:verb>Get</command:verb>
      <command:noun>ProgramRuleName</command:noun>
      <maml:description>
        <maml:para>Gets the name to use for given program rule</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>Takes the parameters to build a simple string for the base name of a rule. This is used when creating new rules and when removing them. You can also use this with `Get-NetFirewallRule -name` to get matching firewall rules. Creates rule name strings with the structure `{$type} program {$program} - {$exename}`</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Get-ProgramRuleName</maml:name>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="none">
          <maml:name>type</maml:name>
          <maml:Description>
            <maml:para>Can be Block or Unblock</maml:para>
          </maml:Description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="2" aliases="none">
          <maml:name>program</maml:name>
          <maml:Description>
            <maml:para>The program name the rule controls. Is created from the name/programName parameter in Unblock/Block-Program. Since groups of rules are created by each creating function this helps maintain a findable name structure.</maml:para>
          </maml:Description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="3" aliases="none">
          <maml:name>exe</maml:name>
          <maml:Description>
            <maml:para>The name of the actual exe being controlled by the rule. Defaults to * so if you're running this outside of the functions creating rules</maml:para>
          </maml:Description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>*</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="none">
        <maml:name>type</maml:name>
        <maml:Description>
          <maml:para>Can be Block or Unblock</maml:para>
        </maml:Description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="2" aliases="none">
        <maml:name>program</maml:name>
        <maml:Description>
          <maml:para>The program name the rule controls. Is created from the name/programName parameter in Unblock/Block-Program. Since groups of rules are created by each creating function this helps maintain a findable name structure.</maml:para>
        </maml:Description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="3" aliases="none">
        <maml:name>exe</maml:name>
        <maml:Description>
          <maml:para>The name of the actual exe being controlled by the rule. Defaults to * so if you're running this outside of the functions creating rules</maml:para>
        </maml:Description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>*</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes />
    <command:returnValues />
    <maml:alertSet>
      <maml:alert>
        <maml:para>Append "*" to the return string to get or remove all matching rules as when they are created inbound or outbound is appended</maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- EXAMPLE 1 --------------------------</maml:title>
        <dev:code>Get-ProgramRuleName -type "Unblock" -program "steam" -exe "steam.exe"</dev:code>
        <dev:remarks>
          <maml:para>Will create a string of "Unblock program steam - steam.exe"</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>Get-ProgramRuleName</maml:linkText>
        <maml:uri>https://EzFirewallMgmt.readthedocs.io/en/latest/commands/Get-ProgramRuleName</maml:uri>
      </maml:navigationLink>
      <maml:navigationLink>
        <maml:linkText>Remove-ProgramRule</maml:linkText>
        <maml:uri>https://EzFirewallMgmt.readthedocs.io/en/latest/commands/Remove-ProgramRule</maml:uri>
      </maml:navigationLink>
      <maml:navigationLink>
        <maml:linkText>Block-Program</maml:linkText>
        <maml:uri>https://EzFirewallMgmt.readthedocs.io/en/latest/commands/Block-Program</maml:uri>
      </maml:navigationLink>
      <maml:navigationLink>
        <maml:linkText>Unblock-Program</maml:linkText>
        <maml:uri>https://EzFirewallMgmt.readthedocs.io/en/latest/commands/Unblock-Program</maml:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Remove-PortRule</command:name>
      <command:verb>Remove</command:verb>
      <command:noun>PortRule</command:noun>
      <maml:description>
        <maml:para>Removes a port firewall rule</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>Creates a search string with given parameters using Get-PortRuleName and appends a wildcard '*' Then uses Remove-NetFirewallRule to remove all matching firewall rules</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Remove-PortRule</maml:name>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="none">
          <maml:name>type</maml:name>
          <maml:Description>
            <maml:para>Can be Unblock or Block</maml:para>
          </maml:Description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="2" aliases="none">
          <maml:name>port</maml:name>
          <maml:Description>
            <maml:para>The port or list of ports controlled by the rule</maml:para>
          </maml:Description>
          <command:parameterValue required="true" variableLength="false">String[]</command:parameterValue>
          <dev:type>
            <maml:name>String[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="3" aliases="none">
          <maml:name>protocol</maml:name>
          <maml:Description>
            <maml:para>Can be TCP, UDP, or BOTH, defaults to BOTH</maml:para>
          </maml:Description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="none">
        <maml:name>type</maml:name>
        <maml:Description>
          <maml:para>Can be Unblock or Block</maml:para>
        </maml:Description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="2" aliases="none">
        <maml:name>port</maml:name>
        <maml:Description>
          <maml:para>The port or list of ports controlled by the rule</maml:para>
        </maml:Description>
        <command:parameterValue required="true" variableLength="false">String[]</command:parameterValue>
        <dev:type>
          <maml:name>String[]</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="3" aliases="none">
        <maml:name>protocol</maml:name>
        <maml:Description>
          <maml:para>Can be TCP, UDP, or BOTH, defaults to BOTH</maml:para>
        </maml:Description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes />
    <command:returnValues />
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- EXAMPLE 1 --------------------------</maml:title>
        <dev:code>Remove-PortRule -type "Block" -port "135","1433-1434"</dev:code>
        <dev:remarks>
          <maml:para>Will remove all the TCP and UDP port rules that match the naming "Block port 135,1433-1434*" Will run it against "Block port 135,1433-1434 TCP " and "Block port 135,1433-1434 UDP "</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>Remove-PortRule</maml:linkText>
        <maml:uri>https://EzFirewallMgmt.readthedocs.io/en/latest/commands/Remove-PortRule</maml:uri>
      </maml:navigationLink>
      <maml:navigationLink>
        <maml:linkText>Get-PortRuleName</maml:linkText>
        <maml:uri>https://EzFirewallMgmt.readthedocs.io/en/latest/commands/Get-PortRuleName</maml:uri>
      </maml:navigationLink>
      <maml:navigationLink>
        <maml:linkText>Block-Port</maml:linkText>
        <maml:uri>https://EzFirewallMgmt.readthedocs.io/en/latest/commands/Block-Port</maml:uri>
      </maml:navigationLink>
      <maml:navigationLink>
        <maml:linkText>Unblock-Port</maml:linkText>
        <maml:uri>https://EzFirewallMgmt.readthedocs.io/en/latest/commands/Unblock-Port</maml:uri>
      </maml:navigationLink>
      <maml:navigationLink>
        <maml:linkText>Remove-NetFirewallRule</maml:linkText>
        <maml:uri>https://docs.microsoft.com/en-us/powershell/module/netsecurity/Remove-NetFirewallRule</maml:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Remove-ProgramRule</command:name>
      <command:verb>Remove</command:verb>
      <command:noun>ProgramRule</command:noun>
      <maml:description>
        <maml:para>Removes a program firewall rule</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>Creates a search string with given parameters using Get-ProgramRuleName and appends a wildcard '*' Then uses Remove-NetFirewallRule to remove all matching firewall rules</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Remove-ProgramRule</maml:name>
        <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="none">
          <maml:name>type</maml:name>
          <maml:Description>
            <maml:para>Can be Unblock or Block</maml:para>
          </maml:Description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="2" aliases="none">
          <maml:name>program</maml:name>
          <maml:Description>
            <maml:para>The program name used to create the rule</maml:para>
          </maml:Description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="3" aliases="none">
          <maml:name>exe</maml:name>
          <maml:Description>
            <maml:para>The specific exe filename controlled by the rule. Defaults to a wildcard '*' To get all exe's created in a rule created by name</maml:para>
          </maml:Description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>*</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="true" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="none">
        <maml:name>type</maml:name>
        <maml:Description>
          <maml:para>Can be Unblock or Block</maml:para>
        </maml:Description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="2" aliases="none">
        <maml:name>program</maml:name>
        <maml:Description>
          <maml:para>The program name used to create the rule</maml:para>
        </maml:Description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="3" aliases="none">
        <maml:name>exe</maml:name>
        <maml:Description>
          <maml:para>The specific exe filename controlled by the rule. Defaults to a wildcard '*' To get all exe's created in a rule created by name</maml:para>
        </maml:Description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>*</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes />
    <command:returnValues />
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- EXAMPLE 1 --------------------------</maml:title>
        <dev:code>Remove-Program -type "Block" -program "steam"</dev:code>
        <dev:remarks>
          <maml:para>Will remove all the block rules matching "Block program steam - *". Because maybe you ungrounded your kid from video games.</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>Remove-ProgramRule</maml:linkText>
        <maml:uri>https://EzFirewallMgmt.readthedocs.io/en/latest/commands/Remove-ProgramRule</maml:uri>
      </maml:navigationLink>
      <maml:navigationLink>
        <maml:linkText>Get-ProgramRuleName</maml:linkText>
        <maml:uri>https://EzFirewallMgmt.readthedocs.io/en/latest/commands/Get-ProgramRuleName</maml:uri>
      </maml:navigationLink>
      <maml:navigationLink>
        <maml:linkText>Block-Program</maml:linkText>
        <maml:uri>https://EzFirewallMgmt.readthedocs.io/en/latest/commands/Block-Program</maml:uri>
      </maml:navigationLink>
      <maml:navigationLink>
        <maml:linkText>Unblock-Program</maml:linkText>
        <maml:uri>https://EzFirewallMgmt.readthedocs.io/en/latest/commands/Unblock-Program</maml:uri>
      </maml:navigationLink>
      <maml:navigationLink>
        <maml:linkText>Remove-NetFirewallRule</maml:linkText>
        <maml:uri>https://docs.microsoft.com/en-us/powershell/module/netsecurity/Remove-NetFirewallRule</maml:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Unblock-Port</command:name>
      <command:verb>Unblock</command:verb>
      <command:noun>Port</command:noun>
      <maml:description>
        <maml:para>UnBlocks a given port or list of ports</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>By default will create Unblocking rules for both tcp and udp versions of the port list given. Also creates Unblocks for both inbound and outbound. Returns a list of the rules created</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Unblock-Port</maml:name>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="none">
          <maml:name>port</maml:name>
          <maml:Description>
            <maml:para>The port or list of ports/port ranges to Unblock</maml:para>
          </maml:Description>
          <command:parameterValue required="true" variableLength="false">String[]</command:parameterValue>
          <dev:type>
            <maml:name>String[]</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="2" aliases="none">
          <maml:name>protocol</maml:name>
          <maml:Description>
            <maml:para>Can be TCP, UDP, or BOTH defaults to Both</maml:para>
          </maml:Description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="none">
        <maml:name>port</maml:name>
        <maml:Description>
          <maml:para>The port or list of ports/port ranges to Unblock</maml:para>
        </maml:Description>
        <command:parameterValue required="true" variableLength="false">String[]</command:parameterValue>
        <dev:type>
          <maml:name>String[]</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="2" aliases="none">
        <maml:name>protocol</maml:name>
        <maml:Description>
          <maml:para>Can be TCP, UDP, or BOTH defaults to Both</maml:para>
        </maml:Description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes />
    <command:returnValues />
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- EXAMPLE 1 --------------------------</maml:title>
        <dev:code>UnBlock-Port -port "1433-1434"</dev:code>
        <dev:remarks>
          <maml:para>Will Unblock tcp and udp ports 1433 through 1434 which would Unblock incoming and outgoing mircosoft sql servers from being accessed over the network or even being browsed if they're using default ports The rule names would be `Unblock port 1433-1434 TCP inbound` `Unblock port 1433-1434 TCP outbound` `Unblock port 1433-1434 UDP inbound` `Unblock port 1433-1434 UDP outbound`</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>Unblock-Port</maml:linkText>
        <maml:uri>https://EzFirewallMgmt.readthedocs.io/en/latest/commands/Unblock-Port</maml:uri>
      </maml:navigationLink>
      <maml:navigationLink>
        <maml:linkText>Block-Port</maml:linkText>
        <maml:uri>https://EzFirewallMgmt.readthedocs.io/en/latest/commands/Block-Port</maml:uri>
      </maml:navigationLink>
      <maml:navigationLink>
        <maml:linkText>Get-PortRuleName</maml:linkText>
        <maml:uri>https://EzFirewallMgmt.readthedocs.io/en/latest/commands/Get-PortRuleName</maml:uri>
      </maml:navigationLink>
      <maml:navigationLink>
        <maml:linkText>Remove-PortRule</maml:linkText>
        <maml:uri>https://EzFirewallMgmt.readthedocs.io/en/latest/commands/Remove-PortRule</maml:uri>
      </maml:navigationLink>
      <maml:navigationLink>
        <maml:linkText>Add-PortRule</maml:linkText>
        <maml:uri>https://EzFirewallMgmt.readthedocs.io/en/latest/commands/Add-PortRule</maml:uri>
      </maml:navigationLink>
      <maml:navigationLink>
        <maml:linkText>New-NetfirewallRule</maml:linkText>
        <maml:uri>https://docs.microsoft.com/en-us/powershell/module/netsecurity/New-NetfirewallRule</maml:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
  <command:command xmlns:maml="http://schemas.microsoft.com/maml/2004/10" xmlns:command="http://schemas.microsoft.com/maml/dev/command/2004/10" xmlns:dev="http://schemas.microsoft.com/maml/dev/2004/10" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
    <command:details>
      <command:name>Unblock-Program</command:name>
      <command:verb>Unblock</command:verb>
      <command:noun>Program</command:noun>
      <maml:description>
        <maml:para>Unblocks all exes found under parent folders matching a given name or unblocks all specific exes at given paths</maml:para>
      </maml:description>
    </command:details>
    <maml:description>
      <maml:para>When using -name will search programFiles/programfiles x86, current users local/roaming appdata, and the program data folder for folders that match the given name (using -match so doesn't need to be exact). Then finds all the exes in those paths and loops through that list of exes creating a unblock rule for each one both inbound and outbound. If you instead specifiy a path or list of paths it will create unblock rules only for the specified rules</maml:para>
    </maml:description>
    <command:syntax>
      <command:syntaxItem>
        <maml:name>Unblock-Program</maml:name>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="none">
          <maml:name>name</maml:name>
          <maml:Description>
            <maml:para>The name of the program folder to match, will also be used in naming the rules</maml:para>
          </maml:Description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
      <command:syntaxItem>
        <maml:name>Unblock-Program</maml:name>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="named" aliases="none">
          <maml:name>path</maml:name>
          <maml:Description>
            <maml:para>The path or list of paths to exes to unblock Can also be passed via pipeline as a FileInfo Object from Get-ChildItem or Get-ExePaths</maml:para>
          </maml:Description>
          <command:parameterValue required="true" variableLength="false">Object</command:parameterValue>
          <dev:type>
            <maml:name>Object</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
        <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
          <maml:name>programName</maml:name>
          <maml:Description>
            <maml:para>The programName to use in rule names when specifying path(s). Will default to the basename (name without extension) of the first exe in the path list parameter</maml:para>
          </maml:Description>
          <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
          <dev:type>
            <maml:name>String</maml:name>
            <maml:uri />
          </dev:type>
          <dev:defaultValue>None</dev:defaultValue>
        </command:parameter>
      </command:syntaxItem>
    </command:syntax>
    <command:parameters>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="1" aliases="none">
        <maml:name>name</maml:name>
        <maml:Description>
          <maml:para>The name of the program folder to match, will also be used in naming the rules</maml:para>
        </maml:Description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="True (ByValue)" position="named" aliases="none">
        <maml:name>path</maml:name>
        <maml:Description>
          <maml:para>The path or list of paths to exes to unblock Can also be passed via pipeline as a FileInfo Object from Get-ChildItem or Get-ExePaths</maml:para>
        </maml:Description>
        <command:parameterValue required="true" variableLength="false">Object</command:parameterValue>
        <dev:type>
          <maml:name>Object</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
      <command:parameter required="false" variableLength="true" globbing="false" pipelineInput="False" position="named" aliases="none">
        <maml:name>programName</maml:name>
        <maml:Description>
          <maml:para>The programName to use in rule names when specifying path(s). Will default to the basename (name without extension) of the first exe in the path list parameter</maml:para>
        </maml:Description>
        <command:parameterValue required="true" variableLength="false">String</command:parameterValue>
        <dev:type>
          <maml:name>String</maml:name>
          <maml:uri />
        </dev:type>
        <dev:defaultValue>None</dev:defaultValue>
      </command:parameter>
    </command:parameters>
    <command:inputTypes />
    <command:returnValues />
    <maml:alertSet>
      <maml:alert>
        <maml:para></maml:para>
      </maml:alert>
    </maml:alertSet>
    <command:examples>
      <command:example>
        <maml:title>-------------------------- EXAMPLE 1 --------------------------</maml:title>
        <dev:code>Unblock-Program -name "Steam"</dev:code>
        <dev:remarks>
          <maml:para>This will find all exe's in the steam program folders and unblock them. This will also include all your downloaded steam game exes. A quick and easy way to make sure your multiplayer games are unblocked Each rule would be named as `Unblock program steam - exename.exe`</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>-------------------------- EXAMPLE 2 --------------------------</maml:title>
        <dev:code>Unblock-Program -path "C:\Program Files\PowerShell\7\pwsh.exe"</dev:code>
        <dev:remarks>
          <maml:para>Will create rules to unblock the powershell 7 exe. Since no name was provided the rule will be called `Unblock program pwsh - pwsh.exe`</maml:para>
        </dev:remarks>
      </command:example>
      <command:example>
        <maml:title>-------------------------- EXAMPLE 3 --------------------------</maml:title>
        <dev:code>Get-ExePaths "steam" | Where-Object BaseName -in "Borderlands3","Drawful 2" | Unblock-Program -programName "selectedSteam"</dev:code>
        <dev:remarks>
          <maml:para>Will find all the exe's in the steam program folders and filter it down to only the exe's with basenames of Borderlands3 and Drawful 2 then pipe those into the path param and create unblock rules for them with a programName of 'selectedSteam'. i.e. `Unblock program selectedSteam - Borderlands3.exe`</maml:para>
        </dev:remarks>
      </command:example>
    </command:examples>
    <command:relatedLinks>
      <maml:navigationLink>
        <maml:linkText>Unblock-Program</maml:linkText>
        <maml:uri>https://EzFirewallMgmt.readthedocs.io/en/latest/commands/Unblock-Program</maml:uri>
      </maml:navigationLink>
      <maml:navigationLink>
        <maml:linkText>Block-Program</maml:linkText>
        <maml:uri>https://EzFirewallMgmt.readthedocs.io/en/latest/commands/Block-Program</maml:uri>
      </maml:navigationLink>
      <maml:navigationLink>
        <maml:linkText>Get-ProgramRuleName</maml:linkText>
        <maml:uri>https://EzFirewallMgmt.readthedocs.io/en/latest/commands/Get-ProgramRuleName</maml:uri>
      </maml:navigationLink>
      <maml:navigationLink>
        <maml:linkText>Remove-ProgramRule</maml:linkText>
        <maml:uri>https://EzFirewallMgmt.readthedocs.io/en/latest/commands/Remove-ProgramRule</maml:uri>
      </maml:navigationLink>
      <maml:navigationLink>
        <maml:linkText>New-NetfirewallRule</maml:linkText>
        <maml:uri>https://docs.microsoft.com/en-us/powershell/module/netsecurity/New-NetfirewallRule</maml:uri>
      </maml:navigationLink>
    </command:relatedLinks>
  </command:command>
</helpItems>