Skip to content

Commit

Permalink
Merge pull request #11186 from MicrosoftDocs/main
Browse files Browse the repository at this point in the history
6/13/2024 AM Publish
  • Loading branch information
Taojunshen committed Jun 13, 2024
2 parents d88c656 + d5c11fe commit 0cac396
Show file tree
Hide file tree
Showing 16 changed files with 1,017 additions and 56 deletions.
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
---
description: Describes the built-in functions in PowerShell.
Locale: en-US
ms.date: 07/17/2023
ms.date: 06/13/2024
online version: https://learn.microsoft.com/powershell/module/Microsoft.PowerShell.Core/about/about_built-in_functions?view=powershell-5.1&WT.mc_id=ps-gethelp
schema: 2.0.0
title: about Built-in Functions
Expand Down Expand Up @@ -33,10 +33,10 @@ In the Windows CMD shell it's common to run the `cd` command without any spaces
between the command and the destination path. This function runs
`Set-Location \` to change to the root folder.

## `Clear-Host`
## `Pause`

This function clears the screen. For more information, see
[Clear-Host](xref:Microsoft.PowerShell.Core.Clear-Host).
This function replicates the behavior of the `pause` command from `cmd.exe`.
The script pauses execution and prompts the user to hit a key to continue.

## `Get-Verb`

Expand All @@ -52,34 +52,36 @@ the systems pager command, `more.com`.

This function has been deprecated. It is an empty function that does nothing.

## `mkdir`
## `prompt`

This function provides a short hand way to run `New-Item -Type Directory` with
your parameters.
This is the function that creates the default prompt for the PowerShell command
line. You can customize your prompt by overriding this function with your own.
For more information see [about_Prompts](about_Prompts.md).

## `more`

This function is a wrapper around the `more.com` native command.

## `oss`
## `Clear-Host`

This function provides a short hand way to run `Out-String -Stream` in a
pipeline.
This function clears the screen. For more information, see
[Clear-Host](xref:Microsoft.PowerShell.Core.Clear-Host).

## `Pause`
## `TabExpansion2`

This function replicates the behavior of CMD's `pause` command. The script
pauses execution and prompts the user to hit a key to continue.
This is the default function to use for tab expansion. For more information, see
[TabExpansion2](xref:Microsoft.PowerShell.Core.TabExpansion2).

## `prompt`
## `oss`

This is the function that creates the default prompt for the PowerShell command
line. You can customize your prompt by overriding this function with your own.
For more information see [about_Prompts](about_Prompts.md).
This function provides a short hand way to run `Out-String -Stream` in a
pipeline. For more information, see
[Out-String](xref:Microsoft.PowerShell.Utility.Out-String).

## `TabExpansion2`
## `mkdir`

This is the default function to use for tab expansion.
This function provides a short hand way to run `New-Item -Type Directory` with
your parameters.

## Windows drive letter functions

Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
---
description: Explains how to use the Tab Expansion feature in PowerShell.
Locale: en-US
ms.date: 12/05/2023
ms.date: 06/13/2024
no-loc: [<kbd>Tab</kbd>, <kbd>Ctrl</kbd>, <kbd>Space</kbd>]
online version: https://learn.microsoft.com/powershell/module/microsoft.powershell.core/about/about_tab_expansion?view=powershell-5.1&WT.mc_id=ps-gethelp
schema: 2.0.0
Expand All @@ -16,9 +16,9 @@ file paths can all be completed by pressing the <kbd>Tab</kbd> key.

## Long description

Tab expansion is controlled by the internal function **TabExpansion** or
**TabExpansion2**. Since this function can be modified or overridden, this
discussion is a guide to the behavior of the default PowerShell configuration.
Tab expansion is controlled by the internal function **TabExpansion2**. Since
this function can be modified or overridden, this discussion is a guide to the
behavior of the default PowerShell configuration.

Tab expansion behavior can also be modified by the Predictive IntelliSense
feature of the PSReadLine module. For more information, see
Expand Down Expand Up @@ -109,6 +109,7 @@ for some parameter. For more information, see

## See also

- [TabExpansion2][06]
- [about_Comment_Based_Help][03]
- [about_Functions_Argument_Completion][04]
- [about_Requires][05]
Expand All @@ -119,3 +120,4 @@ for some parameter. For more information, see
[03]: about_Comment_Based_Help.md
[04]: about_Functions_Argument_Completion.md
[05]: about_Requires.md
[06]: xref:Microsoft.PowerShell.Core.TabExpansion2
243 changes: 243 additions & 0 deletions reference/5.1/Microsoft.PowerShell.Core/TabExpansion2.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,243 @@
---
external help file: System.Management.Automation.dll-Help.xml
Module Name: Microsoft.PowerShell.Core
ms.date: 06/13/2024
online version: https://learn.microsoft.com/powershell/module/microsoft.powershell.core/tabexpansion2?view=powershell-5.1&WT.mc_id=ps-gethelp
schema: 2.0.0
---

# TabExpansion2

## SYNOPSIS
A helper function that wraps the `CompleteInput()` method of the **CommandCompletion** class to
provide tab completion for PowerShell scripts.

## SYNTAX

### ScriptInputSet (Default)

```
TabExpansion2 [-inputScript] <String> [[-cursorColumn] <Int32>] [[-options] <Hashtable>]
[<CommonParameters>]
```

### AstInputSet

```
TabExpansion2 [-ast] <Ast> [-tokens] <Token[]> [-positionOfCursor] <IScriptPosition>
[[-options] <Hashtable>] [<CommonParameters>]
```

## DESCRIPTION

`TabExpansion2` is a built-in function that provides tab completion for user input. PowerShell calls
this function when the user presses the <kbd>Tab</kbd> or <kbd>Ctrl</kbd>+<kbd>Space</kbd> key while
typing a command. The function returns a list of possible completions for the current input.

`TabExpansion2` isn't normally called directly by users. However, it can be useful for testing tab
completion. To use `TabExpansion2`, you need to provide the current input script and the cursor
position in the script. The function returns a **CommandCompletion** object that contains a list of
possible completions for the current input. This input script can be a string or an abstract syntax
tree (AST) that represents the script.

You can override the default behavior of `TabExpansion2` by defining a custom function with the same
name in your PowerShell session. This custom function can provide completions for custom commands or
parameters. While it is possible to override `TabExpansion2`, it's not supported. You should create
a custom function only if you have a specific need to customize the tab completion behavior.

## EXAMPLES

### Example 1 - Get tab completion for command parameter

This example shows the same results you would get by entering `Format-Hex -<Tab>` at the PowerShell
command prompt. The `TabExpansion2` function returns a **CommandCompletion** object that contains a
list of possible completions for the `-` token.

```powershell
TabExpansion2 -inputScript ($s = 'Format-Hex -') -cursorColumn $s.Length |
Select-Object -ExpandProperty CompletionMatches
```

```Output
CompletionText ListItemText ResultType ToolTip
-------------- ------------ ---------- -------
-Path Path ParameterName [string[]] Path
-LiteralPath LiteralPath ParameterName [string[]] LiteralPath
-InputObject InputObject ParameterName [Object] InputObject
-Encoding Encoding ParameterName [string] Encoding
-Raw Raw ParameterName [switch] Raw
-Verbose Verbose ParameterName [switch] Verbose
-Debug Debug ParameterName [switch] Debug
-ErrorAction ErrorAction ParameterName [ActionPreference] ErrorAction
-WarningAction WarningAction ParameterName [ActionPreference] WarningAction
-InformationAction InformationAction ParameterName [ActionPreference] InformationAction
-ErrorVariable ErrorVariable ParameterName [string] ErrorVariable
-WarningVariable WarningVariable ParameterName [string] WarningVariable
-InformationVariable InformationVariable ParameterName [string] InformationVariable
-OutVariable OutVariable ParameterName [string] OutVariable
-OutBuffer OutBuffer ParameterName [int] OutBuffer
-PipelineVariable PipelineVariable ParameterName [string] PipelineVariable
```

### Example 2 - Get tab completion for parameter values

This example shows how to get tab completion for parameter values. In this example, we expect that
**Stage** parameter has three possible values and that one of the values is `Three`. You can use
this technique to test that tab completion for your function returns the expected results.

```powershell
function GetData {
param (
[ValidateSet('One', 'Two', 'Three')]
[string]$Stage
)
Write-Verbose "Retrieving data for stage $Stage"
}
$result = TabExpansion2 -inputScript ($line = 'GetData -Stage ') -cursorColumn $line.Length |
Select-Object -ExpandProperty CompletionMatches
$result.Count -eq 3
$result.CompletionText -contains 'Three'
```

```Output
True
True
```

## PARAMETERS

### -ast

An abstract syntax tree (AST) object that represents the script that you want to expand using tab
completion.

```yaml
Type: System.Management.Automation.Language.Ast
Parameter Sets: AstInputSet
Aliases:

Required: True
Position: 0
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```
### -cursorColumn
The column number of the cursor in the input script string. The cursor position is used to determine
the token that gets expanded by tab completion.
```yaml
Type: System.Int32
Parameter Sets: ScriptInputSet
Aliases:

Required: False
Position: 1
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```
### -inputScript
A string that represents the script that you want to expand using tab completion.
```yaml
Type: System.String
Parameter Sets: ScriptInputSet
Aliases:

Required: True
Position: 0
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```
### -options
A hashtable of option values to pass to the `CompleteInput()` API. The API accepts the following
boolean options:

- `IgnoreHiddenShares` - When set to `$true`, ignore hidden UNC shares such as `\\COMPUTER\ADMIN$`
and `\\COMPUTER\C$`. By default, PowerShell includes hidden shares.
- `RelativePaths` - By default, PowerShell decides how to expand paths based on the input you
provided. Setting this value to `$true` forces PowerShell to replace paths with relative paths.
Setting this value to `$false`, forces PowerShell to replace them with absolute paths.
- `LiteralPaths` - By default, PowerShell replace special file characters, such as square brackets
and back-ticks, with their escaped equivalents. Setting this value to `$true` prevents the
replacement.

```yaml
Type: System.Collections.Hashtable
Parameter Sets: (All)
Aliases:
Required: False
Position: 3
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```

### -positionOfCursor

The column number of the cursor in the input AST. The cursor position is used to determine
the token that gets expanded by tab completion.

```yaml
Type: System.Management.Automation.Language.IScriptPosition
Parameter Sets: AstInputSet
Aliases:
Required: True
Position: 2
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```

### -tokens

An array of tokens parsed from the input script. The tokens are used to determine the token that
gets expanded by tab completion.

```yaml
Type: System.Management.Automation.Language.Token[]
Parameter Sets: AstInputSet
Aliases:
Required: True
Position: 1
Default value: None
Accept pipeline input: False
Accept wildcard characters: False
```

### CommonParameters

This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable,
-InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable,
-ProgressAction -Verbose, -WarningAction, and -WarningVariable. For more information, see
[about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216).

## INPUTS

### None

## OUTPUTS

### System.Management.Automation.CommandCompletion

## NOTES

## RELATED LINKS

[about_Built-in_Functions](./about/about_Built-in_Functions.md)

[about_Tab_Expansion](./about/about_Tab_Expansion.md)

[CompleteInput() method](xref:System.Management.Automation.CommandCompletion.CompleteInput*)
Original file line number Diff line number Diff line change
Expand Up @@ -556,14 +556,14 @@ $xmlQuery = @'
<QueryList>
<Query Id="0" Path="Windows PowerShell">
<Select Path="System">*[System[(Level=3) and
TimeCreated[timediff(@SystemTime) &lt;= 86400000]]]</Select>
TimeCreated[timediff(@SystemTime) &amp;lt;= 86400000]]]</Select>
</Query>
</QueryList>
'@
Get-WinEvent -FilterXML $xmlQuery
# Using the FilterXPath parameter:
$XPath = '*[System[Level=3 and TimeCreated[timediff(@SystemTime) &lt;= 86400000]]]'
$XPath = '*[System[Level=3 and TimeCreated[timediff(@SystemTime) &amp;lt;= 86400000]]]'
Get-WinEvent -LogName 'Windows PowerShell' -FilterXPath $XPath
```

Expand Down
Loading

0 comments on commit 0cac396

Please sign in to comment.