diff --git a/reference/5.1/Microsoft.PowerShell.Core/About/about_Comparison_Operators.md b/reference/5.1/Microsoft.PowerShell.Core/About/about_Comparison_Operators.md
index 2bc9c80740e2..713c48c935c0 100644
--- a/reference/5.1/Microsoft.PowerShell.Core/About/about_Comparison_Operators.md
+++ b/reference/5.1/Microsoft.PowerShell.Core/About/about_Comparison_Operators.md
@@ -1,7 +1,7 @@
---
description: Describes the operators that compare values in PowerShell.
Locale: en-US
-ms.date: 07/15/2021
+ms.date: 11/02/2021
online version: https://docs.microsoft.com/powershell/module/microsoft.powershell.core/about/about_comparison_operators?view=powershell-5.1&WT.mc_id=ps-gethelp
schema: 2.0.0
title: about Comparison Operators
@@ -385,6 +385,9 @@ scalar input, and the `-match` result is **True**, or the `-notmatch` result is
If the regular expression contains capture groups, the `$Matches` contains
additional keys for each group.
+It is important to note that the `$Matches` hashtable contains only the first
+occurrence of any matching pattern.
+
Example:
```powershell
diff --git a/reference/5.1/Microsoft.PowerShell.Core/About/about_Regular_Expressions.md b/reference/5.1/Microsoft.PowerShell.Core/About/about_Regular_Expressions.md
index 6109171ab07a..833caeab033f 100644
--- a/reference/5.1/Microsoft.PowerShell.Core/About/about_Regular_Expressions.md
+++ b/reference/5.1/Microsoft.PowerShell.Core/About/about_Regular_Expressions.md
@@ -1,7 +1,7 @@
---
description: Describes regular expressions in PowerShell.
Locale: en-US
-ms.date: 03/10/2020
+ms.date: 11/02/2021
online version: https://docs.microsoft.com/powershell/module/microsoft.powershell.core/about/about_regular_expressions?view=powershell-5.1&WT.mc_id=ps-gethelp
schema: 2.0.0
title: about Regular Expressions
@@ -27,7 +27,7 @@ has several operators and cmdlets that use regular expressions. You can read
more about their syntax and usage at the links below.
- [Select-String](xref:Microsoft.PowerShell.Utility.Select-String)
-- [-match and -replace operators](about_Comparison_Operators.md)
+- [-match and -replace operators](about_Comparison_Operators.md#matching-operators)
- [-split](about_Split.md)
- [switch statement with -regex option](about_Switch.md)
@@ -40,7 +40,7 @@ shown above has a different way to force case sensitivity.
| `switch` statement | use the `-casesensitive` option |
| operators | prefix with **'c'** (`-cmatch`, `-csplit`, or `-creplace`) |
-### Character literals
+## Character literals
A regular expression can be a literal character or a string. The expression
causes the engine to match the text specified exactly.
@@ -50,12 +50,12 @@ causes the engine to match the text specified exactly.
'book' -match 'oo'
```
-### Character classes
+## Character classes
While character literals work if you know the exact pattern, character classes
allow you to be less specific.
-#### Character groups
+## Character groups
`[character group]` allows you to match any number of characters one time,
while `[^character group]` only matches characters NOT in the group.
@@ -69,7 +69,7 @@ If your list of characters to match includes the hyphen character (`-`), it
must be at the beginning or end of the list to distinguish it from a character
range expression.
-#### Character ranges
+### Character ranges
A pattern can also be a range of characters. The characters can be alphabetic `[A-Z]`,
numeric `[0-9]`, or even ASCII-based `[ -~]` (all printable characters).
@@ -79,7 +79,7 @@ numeric `[0-9]`, or even ASCII-based `[ -~]` (all printable characters).
42 -match '[0-9][0-9]'
```
-#### Numbers
+### Numbers
The `\d` character class will match any decimal digit. Conversely, `\D` will
match any non-decimal digit.
@@ -90,7 +90,7 @@ match any non-decimal digit.
'Server-01' -match 'Server-\d\d'
```
-#### Word characters
+### Word characters
The `\w` character class will match any word character `[a-zA-Z_0-9]`. To match
any non-word character, use `\W`.
@@ -101,7 +101,7 @@ any non-word character, use `\W`.
'Book' -match '\w'
```
-#### Wildcards
+### Wildcards
The period (`.`) is a wildcard character in regular expressions. It will match
any character except a newline (`\n`).
@@ -112,7 +112,7 @@ any character except a newline (`\n`).
'a1\ ' -match '....'
```
-#### Whitespace
+### Whitespace
Whitespace is matched using the `\s` character class. Any non-whitespace
character is matched using `\S`. Literal space characters `' '` can also be
@@ -124,7 +124,7 @@ used.
' - ' -match '\s- '
```
-### Quantifiers
+## Quantifiers
Quantifiers control how many instances of each element should be present in the
input string.
@@ -176,7 +176,7 @@ optional.
'111-222-3333' -match '\d{3}-\d{3}-\d{4}'
```
-### Anchors
+## Anchors
Anchors allow you to cause a match to succeed or fail based on the matches
position within the input string.
@@ -209,7 +209,7 @@ When using anchors in PowerShell, you should understand the difference between
To read more about these options and how to use them, visit the
[Regular Expression Language - Quick Reference](/dotnet/standard/base-types/regular-expression-language-quick-reference).
-### Escaping characters
+## Escaping characters
The backslash (`\`) is used to escape characters so they aren't parsed by the
regular expression engine.
@@ -240,7 +240,7 @@ There`s a static method of the regex class that can escape text for you.
> backslashes used in character classes. Be sure to only use it on the portion
> of your pattern that you need to escape.
-#### Other character escapes
+### Other character escapes
There are also reserved character escapes that you can use to match special
character types.
@@ -253,7 +253,7 @@ The following are a few commonly used character escapes:
|`\n`|Matches a newline|
|`\r`|Matches a carriage return|
-### Groups, Captures, and Substitutions
+## Groups, Captures, and Substitutions
Grouping constructs separate an input string into substrings that can be
captured or ignored. Grouped substrings are called subexpressions. By default
@@ -262,7 +262,7 @@ them as well.
A grouping construct is a regular expression surrounded by parentheses. Any
text matched by the enclosed regular expression is captured. The following
-example will break the input text into two capturing groups.
+example breaks the input text into two capturing groups.
```powershell
'The last logged on user was CONTOSO\jsmith' -match '(.+was )(.+)'
@@ -273,7 +273,9 @@ True
```
Use the `$Matches` **Hashtable** automatic variable to retrieve captured text.
-The text representing the entire match is stored at key `0`.
+The text representing the entire match is stored at key `0`. It is important to
+note that the `$Matches` hashtable contains only the first occurrence of any
+matching pattern.
```powershell
$Matches.0
@@ -317,7 +319,7 @@ Name Value
> Dog
> ```
-#### Named Captures
+### Named Captures
By default, captures are stored in ascending numeric order, from left to right.
You can also assign a **name** to a capturing group. This **name** becomes a
@@ -376,7 +378,7 @@ N jsmith
For more information, see
[Grouping Constructs in Regular Expressions](/dotnet/standard/base-types/grouping-constructs-in-regular-expressions).
-#### Substitutions in Regular Expressions
+### Substitutions in Regular Expressions
Using the regular expressions with the `-replace` operator allows you to
dynamically replace text using captured text.
diff --git a/reference/7.0/Microsoft.PowerShell.Core/About/about_Comparison_Operators.md b/reference/7.0/Microsoft.PowerShell.Core/About/about_Comparison_Operators.md
index 52ba082400d8..218de6136ae4 100644
--- a/reference/7.0/Microsoft.PowerShell.Core/About/about_Comparison_Operators.md
+++ b/reference/7.0/Microsoft.PowerShell.Core/About/about_Comparison_Operators.md
@@ -1,7 +1,7 @@
---
description: Describes the operators that compare values in PowerShell.
Locale: en-US
-ms.date: 07/15/2021
+ms.date: 11/02/2021
online version: https://docs.microsoft.com/powershell/module/microsoft.powershell.core/about/about_comparison_operators?view=powershell-7&WT.mc_id=ps-gethelp
schema: 2.0.0
title: about Comparison Operators
@@ -385,6 +385,9 @@ scalar input, and the `-match` result is **True**, or the `-notmatch` result is
If the regular expression contains capture groups, the `$Matches` contains
additional keys for each group.
+It is important to note that the `$Matches` hashtable contains only the first
+occurrence of any matching pattern.
+
Example:
```powershell
diff --git a/reference/7.0/Microsoft.PowerShell.Core/About/about_PowerShell_Editions.md b/reference/7.0/Microsoft.PowerShell.Core/About/about_PowerShell_Editions.md
index dda7b4a1dd58..a7d0e32cf71a 100644
--- a/reference/7.0/Microsoft.PowerShell.Core/About/about_PowerShell_Editions.md
+++ b/reference/7.0/Microsoft.PowerShell.Core/About/about_PowerShell_Editions.md
@@ -1,7 +1,7 @@
---
description: Different editions of PowerShell run on different underlying runtimes.
Locale: en-US
-ms.date: 03/28/2019
+ms.date: 11/01/2021
online version: https://docs.microsoft.com/powershell/module/microsoft.powershell.core/about/about_powershell_editions?view=powershell-7&WT.mc_id=ps-gethelp
schema: 2.0.0
title: about PowerShell Editions
@@ -53,20 +53,17 @@ $PSVersionTable
```
```Output
-
Name Value
---- -----
-PSVersion 7.2.0
+PSVersion 7.0.8
PSEdition Core
-GitCommitId 7.2.0
+GitCommitId 7.0.8
OS Microsoft Windows 10.0.19043
Platform Win32NT
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...}
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1
WSManStackVersion 3.0
-
-
```
The **PSEdition** field has the same value as the `$PSEdition` automatic variable.
@@ -223,9 +220,9 @@ you use that are affected by edition compatibility.
Generally, scripts that work in PowerShell 6.1 and above will work with Windows PowerShell 5.1,
but there are some exceptions.
-Version 1.18.0 [PSScriptAnalyzer][pssa] module has rules like [PSUseCompatibleCommands][psucc] and
-[PSUseCompatibleTypes][psuct] that are able to detect possibly incompatible usage of commands
-and .NET APIs in PowerShell scripts.
+[PSScriptAnalyzer][pssa] version 1.18+ has rules like [PSUseCompatibleCommands][psucc] and
+[PSUseCompatibleTypes][psuct] that are able to detect possibly incompatible usage of commands and
+.NET APIs in PowerShell scripts.
### .NET assemblies
@@ -244,8 +241,8 @@ to catch possible behavioral differences between editions. For this you must sti
- [Modules with compatible PowerShell Editions](/powershell/scripting/gallery/concepts/module-psedition-support)
[Pester]: https://github.com/pester/Pester/wiki/Pester
-[pssa]: https://github.com/PowerShell/PSScriptAnalyzer
-[psucc]: https://github.com/PowerShell/PSScriptAnalyzer/blob/master/RuleDocumentation/UseCompatibleCommands.md
-[psuct]: https://github.com/PowerShell/PSScriptAnalyzer/blob/master/RuleDocumentation/UseCompatibleTypes.md
+[pssa]: https://www.powershellgallery.com/packages/PSScriptAnalyzer/
+[psucc]: /powershell/utility-modules/psscriptanalyzer/rules/usecompatiblecommands
+[psuct]: /powershell/utility-modules/psscriptanalyzer/rules/usecompatibletypes
[netstd]: /dotnet/standard/net-standard
[psstd]: https://devblogs.microsoft.com/powershell/powershell-standard-library-build-single-module-that-works-across-windows-powershell-and-powershell-core/
diff --git a/reference/7.0/Microsoft.PowerShell.Core/About/about_Regular_Expressions.md b/reference/7.0/Microsoft.PowerShell.Core/About/about_Regular_Expressions.md
index 7db41416f254..9750ff544e56 100644
--- a/reference/7.0/Microsoft.PowerShell.Core/About/about_Regular_Expressions.md
+++ b/reference/7.0/Microsoft.PowerShell.Core/About/about_Regular_Expressions.md
@@ -1,7 +1,7 @@
---
description: Describes regular expressions in PowerShell.
Locale: en-US
-ms.date: 03/10/2020
+ms.date: 11/02/2021
online version: https://docs.microsoft.com/powershell/module/microsoft.powershell.core/about/about_regular_expressions?view=powershell-7&WT.mc_id=ps-gethelp
schema: 2.0.0
title: about Regular Expressions
@@ -27,7 +27,7 @@ has several operators and cmdlets that use regular expressions. You can read
more about their syntax and usage at the links below.
- [Select-String](xref:Microsoft.PowerShell.Utility.Select-String)
-- [-match and -replace operators](about_Comparison_Operators.md)
+- [-match and -replace operators](about_Comparison_Operators.md#matching-operators)
- [-split](about_Split.md)
- [switch statement with -regex option](about_Switch.md)
@@ -40,7 +40,7 @@ shown above has a different way to force case sensitivity.
| `switch` statement | use the `-casesensitive` option |
| operators | prefix with **'c'** (`-cmatch`, `-csplit`, or `-creplace`) |
-### Character literals
+## Character literals
A regular expression can be a literal character or a string. The expression
causes the engine to match the text specified exactly.
@@ -50,12 +50,12 @@ causes the engine to match the text specified exactly.
'book' -match 'oo'
```
-### Character classes
+## Character classes
While character literals work if you know the exact pattern, character classes
allow you to be less specific.
-#### Character groups
+## Character groups
`[character group]` allows you to match any number of characters one time,
while `[^character group]` only matches characters NOT in the group.
@@ -69,7 +69,7 @@ If your list of characters to match includes the hyphen character (`-`), it
must be at the beginning or end of the list to distinguish it from a character
range expression.
-#### Character ranges
+### Character ranges
A pattern can also be a range of characters. The characters can be alphabetic `[A-Z]`,
numeric `[0-9]`, or even ASCII-based `[ -~]` (all printable characters).
@@ -79,7 +79,7 @@ numeric `[0-9]`, or even ASCII-based `[ -~]` (all printable characters).
42 -match '[0-9][0-9]'
```
-#### Numbers
+### Numbers
The `\d` character class will match any decimal digit. Conversely, `\D` will
match any non-decimal digit.
@@ -90,7 +90,7 @@ match any non-decimal digit.
'Server-01' -match 'Server-\d\d'
```
-#### Word characters
+### Word characters
The `\w` character class will match any word character `[a-zA-Z_0-9]`. To match
any non-word character, use `\W`.
@@ -101,7 +101,7 @@ any non-word character, use `\W`.
'Book' -match '\w'
```
-#### Wildcards
+### Wildcards
The period (`.`) is a wildcard character in regular expressions. It will match
any character except a newline (`\n`).
@@ -112,7 +112,7 @@ any character except a newline (`\n`).
'a1\ ' -match '....'
```
-#### Whitespace
+### Whitespace
Whitespace is matched using the `\s` character class. Any non-whitespace
character is matched using `\S`. Literal space characters `' '` can also be
@@ -124,7 +124,7 @@ used.
' - ' -match '\s- '
```
-### Quantifiers
+## Quantifiers
Quantifiers control how many instances of each element should be present in the
input string.
@@ -176,7 +176,7 @@ optional.
'111-222-3333' -match '\d{3}-\d{3}-\d{4}'
```
-### Anchors
+## Anchors
Anchors allow you to cause a match to succeed or fail based on the matches
position within the input string.
@@ -209,7 +209,7 @@ When using anchors in PowerShell, you should understand the difference between
To read more about these options and how to use them, visit the
[Regular Expression Language - Quick Reference](/dotnet/standard/base-types/regular-expression-language-quick-reference).
-### Escaping characters
+## Escaping characters
The backslash (`\`) is used to escape characters so they aren't parsed by the
regular expression engine.
@@ -240,7 +240,7 @@ There`s a static method of the regex class that can escape text for you.
> backslashes used in character classes. Be sure to only use it on the portion
> of your pattern that you need to escape.
-#### Other character escapes
+### Other character escapes
There are also reserved character escapes that you can use to match special
character types.
@@ -253,7 +253,7 @@ The following are a few commonly used character escapes:
|`\n`|Matches a newline|
|`\r`|Matches a carriage return|
-### Groups, Captures, and Substitutions
+## Groups, Captures, and Substitutions
Grouping constructs separate an input string into substrings that can be
captured or ignored. Grouped substrings are called subexpressions. By default
@@ -262,7 +262,7 @@ them as well.
A grouping construct is a regular expression surrounded by parentheses. Any
text matched by the enclosed regular expression is captured. The following
-example will break the input text into two capturing groups.
+example breaks the input text into two capturing groups.
```powershell
'The last logged on user was CONTOSO\jsmith' -match '(.+was )(.+)'
@@ -273,7 +273,9 @@ True
```
Use the `$Matches` **Hashtable** automatic variable to retrieve captured text.
-The text representing the entire match is stored at key `0`.
+The text representing the entire match is stored at key `0`. It is important to
+note that the `$Matches` hashtable contains only the first occurrence of any
+matching pattern.
```powershell
$Matches.0
@@ -317,7 +319,7 @@ Name Value
> Dog
> ```
-#### Named Captures
+### Named Captures
By default, captures are stored in ascending numeric order, from left to right.
You can also assign a **name** to a capturing group. This **name** becomes a
@@ -375,7 +377,7 @@ N jsmith
For more information, see
[Grouping Constructs in Regular Expressions](/dotnet/standard/base-types/grouping-constructs-in-regular-expressions).
-#### Substitutions in Regular Expressions
+### Substitutions in Regular Expressions
Using the regular expressions with the `-replace` operator allows you to
dynamically replace text using captured text.
diff --git a/reference/7.1/Microsoft.PowerShell.Core/About/about_Comparison_Operators.md b/reference/7.1/Microsoft.PowerShell.Core/About/about_Comparison_Operators.md
index de8f85472d4c..3ad735ef8dc0 100644
--- a/reference/7.1/Microsoft.PowerShell.Core/About/about_Comparison_Operators.md
+++ b/reference/7.1/Microsoft.PowerShell.Core/About/about_Comparison_Operators.md
@@ -1,8 +1,8 @@
---
description: Describes the operators that compare values in PowerShell.
Locale: en-US
-ms.date: 07/15/2021
-online version: https://docs.microsoft.com/powershell/module/microsoft.powershell.core/about/about_comparison_operators?view=powershell-5.1&WT.mc_id=ps-gethelp
+ms.date: 11/02/2021
+online version: https://docs.microsoft.com/powershell/module/microsoft.powershell.core/about/about_comparison_operators?view=powershell-7.1&WT.mc_id=ps-gethelp
schema: 2.0.0
title: about Comparison Operators
---
@@ -385,6 +385,9 @@ scalar input, and the `-match` result is **True**, or the `-notmatch` result is
If the regular expression contains capture groups, the `$Matches` contains
additional keys for each group.
+It is important to note that the `$Matches` hashtable contains only the first
+occurrence of any matching pattern.
+
Example:
```powershell
diff --git a/reference/7.1/Microsoft.PowerShell.Core/About/about_PowerShell_Editions.md b/reference/7.1/Microsoft.PowerShell.Core/About/about_PowerShell_Editions.md
index 32b2c7ec6bf8..381c1ec81df8 100644
--- a/reference/7.1/Microsoft.PowerShell.Core/About/about_PowerShell_Editions.md
+++ b/reference/7.1/Microsoft.PowerShell.Core/About/about_PowerShell_Editions.md
@@ -1,7 +1,7 @@
---
description: Different editions of PowerShell run on different underlying runtimes.
Locale: en-US
-ms.date: 03/28/2019
+ms.date: 11/01/2021
online version: https://docs.microsoft.com/powershell/module/microsoft.powershell.core/about/about_powershell_editions?view=powershell-7.1&WT.mc_id=ps-gethelp
schema: 2.0.0
title: about PowerShell Editions
@@ -55,9 +55,9 @@ $PSVersionTable
```Output
Name Value
---- -----
-PSVersion 7.1.4
+PSVersion 7.1.5
PSEdition Core
-GitCommitId 7.1.4
+GitCommitId 7.1.5
OS Microsoft Windows 10.0.19043
Platform Win32NT
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...}
@@ -66,7 +66,7 @@ SerializationVersion 1.1.0.1
WSManStackVersion 3.0
```
-The `PSEdition` field will have the same value as the `$PSEdition` automatic variable.
+The **PSEdition** field has the same value as the `$PSEdition` automatic variable.
## The `CompatiblePSEditions` module manifest field
@@ -220,9 +220,9 @@ you use that are affected by edition compatibility.
Generally, scripts that work in PowerShell 6.1 and above will work with Windows PowerShell 5.1,
but there are some exceptions.
-Version 1.18.0 [PSScriptAnalyzer][pssa] module has rules like [PSUseCompatibleCommands][psucc] and
-[PSUseCompatibleTypes][psuct] that are able to detect possibly incompatible usage of commands
-and .NET APIs in PowerShell scripts.
+[PSScriptAnalyzer][pssa] version 1.18+ has rules like [PSUseCompatibleCommands][psucc] and
+[PSUseCompatibleTypes][psuct] that are able to detect possibly incompatible usage of commands and
+.NET APIs in PowerShell scripts.
### .NET assemblies
@@ -241,8 +241,8 @@ to catch possible behavioral differences between editions. For this you must sti
- [Modules with compatible PowerShell Editions](/powershell/scripting/gallery/concepts/module-psedition-support)
[Pester]: https://github.com/pester/Pester/wiki/Pester
-[pssa]: https://github.com/PowerShell/PSScriptAnalyzer
-[psucc]: https://github.com/PowerShell/PSScriptAnalyzer/blob/master/RuleDocumentation/UseCompatibleCommands.md
-[psuct]: https://github.com/PowerShell/PSScriptAnalyzer/blob/master/RuleDocumentation/UseCompatibleTypes.md
+[pssa]: https://www.powershellgallery.com/packages/PSScriptAnalyzer/
+[psucc]: /powershell/utility-modules/psscriptanalyzer/rules/usecompatiblecommands
+[psuct]: /powershell/utility-modules/psscriptanalyzer/rules/usecompatibletypes
[netstd]: /dotnet/standard/net-standard
[psstd]: https://devblogs.microsoft.com/powershell/powershell-standard-library-build-single-module-that-works-across-windows-powershell-and-powershell-core/
diff --git a/reference/7.1/Microsoft.PowerShell.Core/About/about_Regular_Expressions.md b/reference/7.1/Microsoft.PowerShell.Core/About/about_Regular_Expressions.md
index 678492076729..9b71f1293670 100644
--- a/reference/7.1/Microsoft.PowerShell.Core/About/about_Regular_Expressions.md
+++ b/reference/7.1/Microsoft.PowerShell.Core/About/about_Regular_Expressions.md
@@ -1,7 +1,7 @@
---
description: Describes regular expressions in PowerShell.
Locale: en-US
-ms.date: 03/10/2020
+ms.date: 11/02/2021
online version: https://docs.microsoft.com/powershell/module/microsoft.powershell.core/about/about_regular_expressions?view=powershell-7.1&WT.mc_id=ps-gethelp
schema: 2.0.0
title: about Regular Expressions
@@ -27,7 +27,7 @@ has several operators and cmdlets that use regular expressions. You can read
more about their syntax and usage at the links below.
- [Select-String](xref:Microsoft.PowerShell.Utility.Select-String)
-- [-match and -replace operators](about_Comparison_Operators.md)
+- [-match and -replace operators](about_Comparison_Operators.md#matching-operators)
- [-split](about_Split.md)
- [switch statement with -regex option](about_Switch.md)
@@ -40,7 +40,7 @@ shown above has a different way to force case sensitivity.
| `switch` statement | use the `-casesensitive` option |
| operators | prefix with **'c'** (`-cmatch`, `-csplit`, or `-creplace`) |
-### Character literals
+## Character literals
A regular expression can be a literal character or a string. The expression
causes the engine to match the text specified exactly.
@@ -50,12 +50,12 @@ causes the engine to match the text specified exactly.
'book' -match 'oo'
```
-### Character classes
+## Character classes
While character literals work if you know the exact pattern, character classes
allow you to be less specific.
-#### Character groups
+## Character groups
`[character group]` allows you to match any number of characters one time,
while `[^character group]` only matches characters NOT in the group.
@@ -69,7 +69,7 @@ If your list of characters to match includes the hyphen character (`-`), it
must be at the beginning or end of the list to distinguish it from a character
range expression.
-#### Character ranges
+### Character ranges
A pattern can also be a range of characters. The characters can be alphabetic `[A-Z]`,
numeric `[0-9]`, or even ASCII-based `[ -~]` (all printable characters).
@@ -79,7 +79,7 @@ numeric `[0-9]`, or even ASCII-based `[ -~]` (all printable characters).
42 -match '[0-9][0-9]'
```
-#### Numbers
+### Numbers
The `\d` character class will match any decimal digit. Conversely, `\D` will
match any non-decimal digit.
@@ -90,7 +90,7 @@ match any non-decimal digit.
'Server-01' -match 'Server-\d\d'
```
-#### Word characters
+### Word characters
The `\w` character class will match any word character `[a-zA-Z_0-9]`. To match
any non-word character, use `\W`.
@@ -101,7 +101,7 @@ any non-word character, use `\W`.
'Book' -match '\w'
```
-#### Wildcards
+### Wildcards
The period (`.`) is a wildcard character in regular expressions. It will match
any character except a newline (`\n`).
@@ -112,7 +112,7 @@ any character except a newline (`\n`).
'a1\ ' -match '....'
```
-#### Whitespace
+### Whitespace
Whitespace is matched using the `\s` character class. Any non-whitespace
character is matched using `\S`. Literal space characters `' '` can also be
@@ -124,7 +124,7 @@ used.
' - ' -match '\s- '
```
-### Quantifiers
+## Quantifiers
Quantifiers control how many instances of each element should be present in the
input string.
@@ -176,7 +176,7 @@ optional.
'111-222-3333' -match '\d{3}-\d{3}-\d{4}'
```
-### Anchors
+## Anchors
Anchors allow you to cause a match to succeed or fail based on the matches
position within the input string.
@@ -209,7 +209,7 @@ When using anchors in PowerShell, you should understand the difference between
To read more about these options and how to use them, visit the
[Regular Expression Language - Quick Reference](/dotnet/standard/base-types/regular-expression-language-quick-reference).
-### Escaping characters
+## Escaping characters
The backslash (`\`) is used to escape characters so they aren't parsed by the
regular expression engine.
@@ -240,7 +240,7 @@ There`s a static method of the regex class that can escape text for you.
> backslashes used in character classes. Be sure to only use it on the portion
> of your pattern that you need to escape.
-#### Other character escapes
+### Other character escapes
There are also reserved character escapes that you can use to match special
character types.
@@ -253,7 +253,7 @@ The following are a few commonly used character escapes:
|`\n`|Matches a newline|
|`\r`|Matches a carriage return|
-### Groups, Captures, and Substitutions
+## Groups, Captures, and Substitutions
Grouping constructs separate an input string into substrings that can be
captured or ignored. Grouped substrings are called subexpressions. By default
@@ -262,7 +262,7 @@ them as well.
A grouping construct is a regular expression surrounded by parentheses. Any
text matched by the enclosed regular expression is captured. The following
-example will break the input text into two capturing groups.
+example breaks the input text into two capturing groups.
```powershell
'The last logged on user was CONTOSO\jsmith' -match '(.+was )(.+)'
@@ -273,7 +273,9 @@ True
```
Use the `$Matches` **Hashtable** automatic variable to retrieve captured text.
-The text representing the entire match is stored at key `0`.
+The text representing the entire match is stored at key `0`. It is important to
+note that the `$Matches` hashtable contains only the first occurrence of any
+matching pattern.
```powershell
$Matches.0
@@ -317,7 +319,7 @@ Name Value
> Dog
> ```
-#### Named Captures
+### Named Captures
By default, captures are stored in ascending numeric order, from left to right.
You can also assign a **name** to a capturing group. This **name** becomes a
@@ -375,7 +377,7 @@ N jsmith
For more information, see
[Grouping Constructs in Regular Expressions](/dotnet/standard/base-types/grouping-constructs-in-regular-expressions).
-#### Substitutions in Regular Expressions
+### Substitutions in Regular Expressions
Using the regular expressions with the `-replace` operator allows you to
dynamically replace text using captured text.
@@ -462,4 +464,3 @@ For more information, see [Substitutions in Regular Expressions](/dotnet/standar
[about_Comparison_Operators](about_Comparison_Operators.md)
[about_Operators](about_Operators.md)
-
diff --git a/reference/7.2/Microsoft.PowerShell.Core/About/about_Comparison_Operators.md b/reference/7.2/Microsoft.PowerShell.Core/About/about_Comparison_Operators.md
index 08335dae1cf3..a01574edad14 100644
--- a/reference/7.2/Microsoft.PowerShell.Core/About/about_Comparison_Operators.md
+++ b/reference/7.2/Microsoft.PowerShell.Core/About/about_Comparison_Operators.md
@@ -1,7 +1,7 @@
---
description: Describes the operators that compare values in PowerShell.
Locale: en-US
-ms.date: 07/15/2021
+ms.date: 11/02/2021
online version: https://docs.microsoft.com/powershell/module/microsoft.powershell.core/about/about_comparison_operators?view=powershell-7.2&WT.mc_id=ps-gethelp
schema: 2.0.0
title: about Comparison Operators
@@ -385,6 +385,9 @@ scalar input, and the `-match` result is **True**, or the `-notmatch` result is
If the regular expression contains capture groups, the `$Matches` contains
additional keys for each group.
+It is important to note that the `$Matches` hashtable contains only the first
+occurrence of any matching pattern.
+
Example:
```powershell
diff --git a/reference/7.2/Microsoft.PowerShell.Core/About/about_PowerShell_Editions.md b/reference/7.2/Microsoft.PowerShell.Core/About/about_PowerShell_Editions.md
index 8b59efca42e0..4547b3cb5375 100644
--- a/reference/7.2/Microsoft.PowerShell.Core/About/about_PowerShell_Editions.md
+++ b/reference/7.2/Microsoft.PowerShell.Core/About/about_PowerShell_Editions.md
@@ -1,7 +1,7 @@
---
description: Different editions of PowerShell run on different underlying runtimes.
Locale: en-US
-ms.date: 03/28/2019
+ms.date: 11/01/2021
online version: https://docs.microsoft.com/powershell/module/microsoft.powershell.core/about/about_powershell_editions?view=powershell-7.2&WT.mc_id=ps-gethelp
schema: 2.0.0
title: about PowerShell Editions
@@ -46,7 +46,7 @@ as the same as having the value `Desktop`.
### Edition in `$PSVersionTable`
-The `$PSVersionTable` automatic variable also has edition information in PowerShell 5.1 and above:
+The `$PSVersionTable` automatic variable also has **PSEdition** property in PowerShell 5.1 and above:
```powershell
$PSVersionTable
@@ -55,10 +55,10 @@ $PSVersionTable
```Output
Name Value
---- -----
-PSVersion 6.2.0-rc.1
-PSEdition Core # <-- Edition information
-GitCommitId 6.2.0-rc.1
-OS Microsoft Windows 10.0.18865
+PSVersion 7.2.0
+PSEdition Core
+GitCommitId 7.2.0
+OS Microsoft Windows 10.0.19043
Platform Win32NT
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...}
PSRemotingProtocolVersion 2.3
@@ -66,7 +66,7 @@ SerializationVersion 1.1.0.1
WSManStackVersion 3.0
```
-The `PSEdition` field will have the same value as the `$PSEdition` automatic variable.
+The **PSEdition** field has the same value as the `$PSEdition` automatic variable.
## The `CompatiblePSEditions` module manifest field
@@ -220,9 +220,9 @@ you use that are affected by edition compatibility.
Generally, scripts that work in PowerShell 6.1 and above will work with Windows PowerShell 5.1,
but there are some exceptions.
-Version 1.18.0 [PSScriptAnalyzer][pssa] module has rules like [PSUseCompatibleCommands][psucc] and
-[PSUseCompatibleTypes][psuct] that are able to detect possibly incompatible usage of commands
-and .NET APIs in PowerShell scripts.
+[PSScriptAnalyzer][pssa] version 1.18+ has rules like [PSUseCompatibleCommands][psucc] and
+[PSUseCompatibleTypes][psuct] that are able to detect possibly incompatible usage of commands and
+.NET APIs in PowerShell scripts.
### .NET assemblies
@@ -241,8 +241,8 @@ to catch possible behavioral differences between editions. For this you must sti
- [Modules with compatible PowerShell Editions](/powershell/scripting/gallery/concepts/module-psedition-support)
[Pester]: https://github.com/pester/Pester/wiki/Pester
-[pssa]: https://github.com/PowerShell/PSScriptAnalyzer
-[psucc]: https://github.com/PowerShell/PSScriptAnalyzer/blob/master/RuleDocumentation/UseCompatibleCommands.md
-[psuct]: https://github.com/PowerShell/PSScriptAnalyzer/blob/master/RuleDocumentation/UseCompatibleTypes.md
+[pssa]: https://www.powershellgallery.com/packages/PSScriptAnalyzer/
+[psucc]: /powershell/utility-modules/psscriptanalyzer/rules/usecompatiblecommands
+[psuct]: /powershell/utility-modules/psscriptanalyzer/rules/usecompatibletypes
[netstd]: /dotnet/standard/net-standard
[psstd]: https://devblogs.microsoft.com/powershell/powershell-standard-library-build-single-module-that-works-across-windows-powershell-and-powershell-core/
diff --git a/reference/7.2/Microsoft.PowerShell.Core/About/about_Regular_Expressions.md b/reference/7.2/Microsoft.PowerShell.Core/About/about_Regular_Expressions.md
index 4886972e8bc1..6cd4d6e3bd05 100644
--- a/reference/7.2/Microsoft.PowerShell.Core/About/about_Regular_Expressions.md
+++ b/reference/7.2/Microsoft.PowerShell.Core/About/about_Regular_Expressions.md
@@ -1,7 +1,7 @@
---
description: Describes regular expressions in PowerShell.
Locale: en-US
-ms.date: 03/10/2020
+ms.date: 11/02/2021
online version: https://docs.microsoft.com/powershell/module/microsoft.powershell.core/about/about_regular_expressions?view=powershell-7.2&WT.mc_id=ps-gethelp
schema: 2.0.0
title: about Regular Expressions
@@ -27,7 +27,7 @@ has several operators and cmdlets that use regular expressions. You can read
more about their syntax and usage at the links below.
- [Select-String](xref:Microsoft.PowerShell.Utility.Select-String)
-- [-match and -replace operators](about_Comparison_Operators.md)
+- [-match and -replace operators](about_Comparison_Operators.md#matching-operators)
- [-split](about_Split.md)
- [switch statement with -regex option](about_Switch.md)
@@ -40,7 +40,7 @@ shown above has a different way to force case sensitivity.
| `switch` statement | use the `-casesensitive` option |
| operators | prefix with **'c'** (`-cmatch`, `-csplit`, or `-creplace`) |
-### Character literals
+## Character literals
A regular expression can be a literal character or a string. The expression
causes the engine to match the text specified exactly.
@@ -50,12 +50,12 @@ causes the engine to match the text specified exactly.
'book' -match 'oo'
```
-### Character classes
+## Character classes
While character literals work if you know the exact pattern, character classes
allow you to be less specific.
-#### Character groups
+## Character groups
`[character group]` allows you to match any number of characters one time,
while `[^character group]` only matches characters NOT in the group.
@@ -69,7 +69,7 @@ If your list of characters to match includes the hyphen character (`-`), it
must be at the beginning or end of the list to distinguish it from a character
range expression.
-#### Character ranges
+### Character ranges
A pattern can also be a range of characters. The characters can be alphabetic `[A-Z]`,
numeric `[0-9]`, or even ASCII-based `[ -~]` (all printable characters).
@@ -79,7 +79,7 @@ numeric `[0-9]`, or even ASCII-based `[ -~]` (all printable characters).
42 -match '[0-9][0-9]'
```
-#### Numbers
+### Numbers
The `\d` character class will match any decimal digit. Conversely, `\D` will
match any non-decimal digit.
@@ -90,7 +90,7 @@ match any non-decimal digit.
'Server-01' -match 'Server-\d\d'
```
-#### Word characters
+### Word characters
The `\w` character class will match any word character `[a-zA-Z_0-9]`. To match
any non-word character, use `\W`.
@@ -101,7 +101,7 @@ any non-word character, use `\W`.
'Book' -match '\w'
```
-#### Wildcards
+### Wildcards
The period (`.`) is a wildcard character in regular expressions. It will match
any character except a newline (`\n`).
@@ -112,7 +112,7 @@ any character except a newline (`\n`).
'a1\ ' -match '....'
```
-#### Whitespace
+### Whitespace
Whitespace is matched using the `\s` character class. Any non-whitespace
character is matched using `\S`. Literal space characters `' '` can also be
@@ -124,7 +124,7 @@ used.
' - ' -match '\s- '
```
-### Quantifiers
+## Quantifiers
Quantifiers control how many instances of each element should be present in the
input string.
@@ -176,7 +176,7 @@ optional.
'111-222-3333' -match '\d{3}-\d{3}-\d{4}'
```
-### Anchors
+## Anchors
Anchors allow you to cause a match to succeed or fail based on the matches
position within the input string.
@@ -209,7 +209,7 @@ When using anchors in PowerShell, you should understand the difference between
To read more about these options and how to use them, visit the
[Regular Expression Language - Quick Reference](/dotnet/standard/base-types/regular-expression-language-quick-reference).
-### Escaping characters
+## Escaping characters
The backslash (`\`) is used to escape characters so they aren't parsed by the
regular expression engine.
@@ -240,7 +240,7 @@ There`s a static method of the regex class that can escape text for you.
> backslashes used in character classes. Be sure to only use it on the portion
> of your pattern that you need to escape.
-#### Other character escapes
+### Other character escapes
There are also reserved character escapes that you can use to match special
character types.
@@ -253,7 +253,7 @@ The following are a few commonly used character escapes:
|`\n`|Matches a newline|
|`\r`|Matches a carriage return|
-### Groups, Captures, and Substitutions
+## Groups, Captures, and Substitutions
Grouping constructs separate an input string into substrings that can be
captured or ignored. Grouped substrings are called subexpressions. By default
@@ -262,7 +262,7 @@ them as well.
A grouping construct is a regular expression surrounded by parentheses. Any
text matched by the enclosed regular expression is captured. The following
-example will break the input text into two capturing groups.
+example breaks the input text into two capturing groups.
```powershell
'The last logged on user was CONTOSO\jsmith' -match '(.+was )(.+)'
@@ -273,7 +273,9 @@ True
```
Use the `$Matches` **Hashtable** automatic variable to retrieve captured text.
-The text representing the entire match is stored at key `0`.
+The text representing the entire match is stored at key `0`. It is important to
+note that the `$Matches` hashtable contains only the first occurrence of any
+matching pattern.
```powershell
$Matches.0
@@ -317,7 +319,7 @@ Name Value
> Dog
> ```
-#### Named Captures
+### Named Captures
By default, captures are stored in ascending numeric order, from left to right.
You can also assign a **name** to a capturing group. This **name** becomes a
@@ -375,7 +377,7 @@ N jsmith
For more information, see
[Grouping Constructs in Regular Expressions](/dotnet/standard/base-types/grouping-constructs-in-regular-expressions).
-#### Substitutions in Regular Expressions
+### Substitutions in Regular Expressions
Using the regular expressions with the `-replace` operator allows you to
dynamically replace text using captured text.
@@ -462,4 +464,3 @@ For more information, see [Substitutions in Regular Expressions](/dotnet/standar
[about_Comparison_Operators](about_Comparison_Operators.md)
[about_Operators](about_Operators.md)
-
diff --git a/reference/docs-conceptual/dev-cross-plat/performance/script-authoring-considerations.md b/reference/docs-conceptual/dev-cross-plat/performance/script-authoring-considerations.md
index 25b655ce3469..add51f1274e2 100644
--- a/reference/docs-conceptual/dev-cross-plat/performance/script-authoring-considerations.md
+++ b/reference/docs-conceptual/dev-cross-plat/performance/script-authoring-considerations.md
@@ -1,6 +1,6 @@
---
description: Scripting for Performance in PowerShell
-ms.date: 09/30/2021
+ms.date: 11/01/2021
title: PowerShell scripting performance considerations
---
@@ -132,7 +132,8 @@ sense, many scripts use `Write-Host`.
If you must write many messages to the console, `Write-Host` can be an order of magnitude slower
than `[Console]::WriteLine()`. However, be aware that `[Console]::WriteLine()` is only a suitable
alternative for specific hosts like `pwsh.exe`, `powershell.exe`, or `powershell_ise.exe`. It's not
-guaranteed to work in all hosts.
+guaranteed to work in all hosts. Also, output written using `[Console]::WriteLine()` does not get
+written to transcripts started by `Start-Transcript`.
Instead of using `Write-Host`, consider using
[Write-Output](/powershell/module/Microsoft.PowerShell.Utility/Write-Output).
diff --git a/reference/docs-conceptual/dsc/pull-server/pullServer.md b/reference/docs-conceptual/dsc/pull-server/pullServer.md
index a2592b6bddb9..68d20a1e1c57 100644
--- a/reference/docs-conceptual/dsc/pull-server/pullServer.md
+++ b/reference/docs-conceptual/dsc/pull-server/pullServer.md
@@ -1,6 +1,6 @@
---
description: Local Configuration Manager (LCM) can be centrally managed by a Pull Service solution. When using this approach, the node that is being managed is registered with a service and assigned a configuration in LCM settings.
-ms.date: 10/05/2021
+ms.date: 11/01/2021
title: DSC Pull Service
---
@@ -104,7 +104,8 @@ To configure the pull server to use SQL Server, set **SqlProvider** to `$true` a
[SqlClient Connection Strings](/dotnet/framework/data/adonet/connection-string-syntax#sqlclient-connection-strings).
For an example of SQL Server configuration with **xDscWebService**, first read
[Using the xDscWebService resource](#using-the-xdscwebservice-resource) and then review
-[Sample_xDscWebServiceRegistration_UseSQLProvider.ps1 on GitHub](https://github.com/dsccommunity/xPSDesiredStateConfiguration/blob/master/source/Examples/Sample_xDscWebServiceRegistration_UseSQLProvider.ps1).
+[2-xDscWebService_RegistrationUseSQLProvider_Config.ps1](https://github.com/dsccommunity/xPSDesiredStateConfiguration/blob/main/source/Examples/Resources/xDscWebService/2-xDscWebService_RegistrationUseSQLProvider_Config.ps1)
+on GitHub.
### Using the xDscWebService resource
diff --git a/reference/docs-conceptual/windows-powershell/install/Installing-Windows-PowerShell.md b/reference/docs-conceptual/windows-powershell/install/Installing-Windows-PowerShell.md
index 5409ba55b2da..9cc416723e97 100644
--- a/reference/docs-conceptual/windows-powershell/install/Installing-Windows-PowerShell.md
+++ b/reference/docs-conceptual/windows-powershell/install/Installing-Windows-PowerShell.md
@@ -71,11 +71,11 @@ PowerShell.
If you need to update your existing version of PowerShell, in Windows, use the following table to
locate the installer for the version of PowerShell you want to update to.
-| Windows | PS 3.0 | PS 4.0 | PS 5.0 | PS 5.1 |
-| ---------------------------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------- |
-| Windows 10 (see Note1)
Windows Server 2016 | - | - | - | installed |
-| Windows 8.1
Windows Server 2012 R2 | - | installed | [WMF 5.0](https://www.microsoft.com/download/details.aspx?id=50395) | [WMF 5.1](https://www.microsoft.com/download/details.aspx?id=54616) |
-| Windows 8
Windows Server 2012 | installed | [WMF 4.0](https://www.microsoft.com/download/details.aspx?id=40855) | [WMF 5.0](https://www.microsoft.com/download/details.aspx?id=50395) | [WMF 5.1](https://www.microsoft.com/download/details.aspx?id=54616) |
+| Windows | PS 3.0 | PS 4.0 | PS 5.0 | PS 5.1 |
+| ---------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- | ------------------------------------------------------------------- |
+| Windows 10 (see Note1)
Windows Server 2016 | - | - | - | installed |
+| Windows 8.1
Windows Server 2012 R2 | - | installed | [WMF 5.0](https://www.microsoft.com/download/details.aspx?id=50395) | [WMF 5.1](https://www.microsoft.com/download/details.aspx?id=54616) |
+| Windows 8
Windows Server 2012 | installed | [WMF 4.0](https://www.microsoft.com/download/details.aspx?id=40855) | [WMF 5.0](https://www.microsoft.com/download/details.aspx?id=50395) | [WMF 5.1](https://www.microsoft.com/download/details.aspx?id=54616) |
| Windows 7 SP1
Windows Server 2008 R2 SP1 | [WMF 3.0](https://www.microsoft.com/download/details.aspx?id=34595) | [WMF 4.0](https://www.microsoft.com/download/details.aspx?id=40855) | [WMF 5.0](https://www.microsoft.com/download/details.aspx?id=50395) | [WMF 5.1](https://www.microsoft.com/download/details.aspx?id=54616) |
> [!NOTE]
diff --git a/reference/docs-conceptual/windows-powershell/install/Installing-the-Windows-PowerShell-2.0-Engine.md b/reference/docs-conceptual/windows-powershell/install/Installing-the-Windows-PowerShell-2.0-Engine.md
index ea77aee633fd..a10a56ab4d8e 100644
--- a/reference/docs-conceptual/windows-powershell/install/Installing-the-Windows-PowerShell-2.0-Engine.md
+++ b/reference/docs-conceptual/windows-powershell/install/Installing-the-Windows-PowerShell-2.0-Engine.md
@@ -1,6 +1,6 @@
---
description: The Windows PowerShell 2.0 Engine is an optional feature of Windows. This article explains how to install the feature and the necessary requirements.
-ms.date: 10/07/2021
+ms.date: 11/01/2021
title: Installing the Windows PowerShell 2.0 Engine
---
@@ -94,15 +94,15 @@ For information about starting the Windows PowerShell 2.0 Engine, see
## On Earlier Systems
-The [Windows Management Framework 4.0](https://go.microsoft.com/fwlink/?LinkID=293881) package that
-installs Windows PowerShell 4.0 on Windows 7, Windows Server 2008 R2, and Windows Server 2012,
-includes the Windows PowerShell 2.0 Engine. The Windows PowerShell 2.0 Engine is enabled and ready
-to use, if necessary, without additional installation, setup, or configuration.
+The [Windows Management Framework 4.0](https://www.microsoft.com/download/details.aspx?id=40855)
+package that installs Windows PowerShell 4.0 on Windows 7, Windows Server 2008 R2, and Windows
+Server 2012, includes the Windows PowerShell 2.0 Engine. The Windows PowerShell 2.0 Engine is
+enabled and ready to use, if necessary, without additional installation, setup, or configuration.
-The Windows Management Framework 3.0 package that installs Windows PowerShell 3.0 on Windows 7,
-Windows Server 2008 R2, and Windows Server 2008, includes the Windows PowerShell 2.0 Engine. The
-Windows PowerShell 2.0 Engine is enabled and ready to use, if necessary, without additional
-installation, setup, or configuration.
+The [Windows Management Framework 3.0](https://www.microsoft.com/download/details.aspx?id=34595)
+package that installs Windows PowerShell 3.0 on Windows 7, Windows Server 2008 R2, and Windows
+Server 2008, includes the Windows PowerShell 2.0 Engine. The Windows PowerShell 2.0 Engine is
+enabled and ready to use, if necessary, without additional installation, setup, or configuration.
## See Also
diff --git a/reference/docs-conceptual/windows-powershell/install/Windows-PowerShell-System-Requirements.md b/reference/docs-conceptual/windows-powershell/install/Windows-PowerShell-System-Requirements.md
index 42f6189748f8..49dc6fdf0693 100644
--- a/reference/docs-conceptual/windows-powershell/install/Windows-PowerShell-System-Requirements.md
+++ b/reference/docs-conceptual/windows-powershell/install/Windows-PowerShell-System-Requirements.md
@@ -74,13 +74,13 @@ install the specified version of the Windows Management Framework for your opera
Windows PowerShell 3.0 runs on the following versions of Windows. To run Windows PowerShell 3.0,
install the specified version of the Windows Management Framework for your operating system.
-| Windows version | System requirement |
-| ------------------------------------------- | ---------------------------------------------------------------------------------------------------------- |
-| Windows 8 | Installed by default |
-| Windows Server 2012 | Installed by default |
+| Windows version | System requirement |
+| ------------------------------------------ | ---------------------------------------------------------------------------------------------------- |
+| Windows 8 | Installed by default |
+| Windows Server 2012 | Installed by default |
| Windows 7 with Service Pack 1 | Install [Windows Management Framework 3.0](https://www.microsoft.com/download/details.aspx?id=34595) |
| Windows Server 2008 R2 with Service Pack 1 | Install [Windows Management Framework 3.0](https://www.microsoft.com/download/details.aspx?id=34595) |
-| Windows Server 2008 with Service Pack 2 | Install [Windows Management Framework 3.0](https://www.microsoft.com/download/details.aspx?id=34595) |
+| Windows Server 2008 with Service Pack 2 | Install [Windows Management Framework 3.0](https://www.microsoft.com/download/details.aspx?id=34595) |
## Microsoft .NET Framework requirements
diff --git a/reference/docs-conceptual/windows-powershell/ise/Keyboard-Shortcuts-for-the-Windows-PowerShell-ISE.md b/reference/docs-conceptual/windows-powershell/ise/Keyboard-Shortcuts-for-the-Windows-PowerShell-ISE.md
index b57679f1781b..223e22248f8f 100644
--- a/reference/docs-conceptual/windows-powershell/ise/Keyboard-Shortcuts-for-the-Windows-PowerShell-ISE.md
+++ b/reference/docs-conceptual/windows-powershell/ise/Keyboard-Shortcuts-for-the-Windows-PowerShell-ISE.md
@@ -10,7 +10,7 @@ Use the following keyboard shortcuts to perform actions in Windows PowerShell&re
Environment (ISE). Windows PowerShell ISE is available as part of the Windows Server and Windows
client operating systems, but can also be installed on some older Windows operating systems as part
of the
-[Windows Management Framework 4.0 download package](https://go.microsoft.com/fwlink/?LinkID=293881).
+[Windows Management Framework 4.0 download package](https://www.microsoft.com/download/details.aspx?id=40855).
## Keyboard shortcuts for editing text
diff --git a/reference/docs-conceptual/windows-powershell/wmf/overview.md b/reference/docs-conceptual/windows-powershell/wmf/overview.md
index ea06d32fd16d..49c2ed60bb67 100644
--- a/reference/docs-conceptual/windows-powershell/wmf/overview.md
+++ b/reference/docs-conceptual/windows-powershell/wmf/overview.md
@@ -1,6 +1,6 @@
---
description: WMF is a prerequisite for Windows PowerShell. This articles shows the history of WMF versions and provides information about how to find and install WMF.
-ms.date: 10/07/2021
+ms.date: 11/02/2021
title: Windows Management Framework (WMF)
---
@@ -27,10 +27,10 @@ WMF installation adds and/or updates the following features:
To learn about various enhancements in PowerShell and other components of a given WMF, please refer
to the links below to review the release notes:
-- [WMF 5.1](whats-new/release-notes.md#wmf-51-changes)
-- [WMF 5.0](whats-new/release-notes.md#wmf-50-changes)
-- [WMF 4.0](https://download.microsoft.com/download/3/D/6/3D61D262-8549-4769-A660-230B67E15B25/Windows%20Management%20Framework%204%200%20Release%20Notes.docx)
-- [WMF 3.0](https://download.microsoft.com/download/E/7/6/E76850B8-DA6E-4FF5-8CCE-A24FC513FD16/WMF%203%20Release%20Notes.docx)
+- [WMF 5.1][wmf51rel]
+- [WMF 5.0][wmf50rel]
+- [WMF 4.0][wmf40rel]
+- [WMF 3.0][wmf30rel]
## WMF Availability Across Windows Operating Systems
@@ -61,8 +61,14 @@ to the links below to review the release notes:
> [!NOTE]
> The installer for WMF 5.0 is no longer available or supported. It has been replaced by WMF 5.1.
+
+
[Lifecycle]: https://support.microsoft.com/lifecycle
[WMF 5.1]: https://aka.ms/wmf51download
[WMF 4.0]: https://aka.ms/wmf4download
[WMF 3.0]: https://aka.ms/wmf3download
[WMF 2.0]: https://aka.ms/wmf2download
+[wmf51rel]: whats-new/release-notes.md#wmf-51-changes
+[wmf50rel]: whats-new/release-notes.md#wmf-50-changes
+[wmf40rel]: https://download.microsoft.com/download/3/D/6/3D61D262-8549-4769-A660-230B67E15B25/Windows%20Management%20Framework%204%200%20Release%20Notes.docx
+[wmf30rel]: https://download.microsoft.com/download/E/7/6/E76850B8-DA6E-4FF5-8CCE-A24FC513FD16/WMF%203%20Release%20Notes.docx
diff --git a/reference/docs-conceptual/windows-powershell/wmf/whats-new/script-logging.md b/reference/docs-conceptual/windows-powershell/wmf/whats-new/script-logging.md
index c048b566d191..1e978b12bc88 100644
--- a/reference/docs-conceptual/windows-powershell/wmf/whats-new/script-logging.md
+++ b/reference/docs-conceptual/windows-powershell/wmf/whats-new/script-logging.md
@@ -117,7 +117,7 @@ As with all logging systems that have a limited retention buffer, one way to att
infrastructure is to flood the log with spurious events to hide earlier evidence. To protect
yourself from this attack, ensure that you have some form of event log collection set up Windows
Event Forwarding. For more information, see
-[Spotting the Adversary with Windows Event Log Monitoring][report].
+[Use Azure Monitor to integrate with SIEM tools][SIEM].
-[report]: https://apps.nsa.gov/iaarchive/library/reports/spotting-the-adversary-with-windows-event-log-monitoring.cfm
+[SIEM]: https://azure.microsoft.com/blog/use-azure-monitor-to-integrate-with-siem-tools/
diff --git a/reference/module/index.md b/reference/module/index.md
index 32f4fa333039..dbaa153175fc 100644
--- a/reference/module/index.md
+++ b/reference/module/index.md
@@ -12,7 +12,7 @@ ms.manager: sewhee
ms.product: powershell
ms.topic: landing-page
quickFilterColumn1: powershell-7.1,windowsserver2019-ps
-quickFilterColumn2: azps-6.5.0,win-mdop2-ps
+quickFilterColumn2: azps-6.6.0,win-mdop2-ps
quickFilterColumn3: sqlserver-ps,systemcenter-ps-2019
title: PowerShell Module Browser
---