cmdlet
Get-Content
获取路径指定位置的项的内容,例如文件中的文本或函数的内容。 对于文件,内容一次读取一行,并返回对象的集合,其中每个对象表示一行内容。
从 PowerShell 3.0 开始,
Get-Content
还可以从项的开头或末尾获取指定数量的行。
示例 1:获取文本文件的内容
此示例获取当前目录中文件的内容。 该文件
LineNumbers.txt
包含 100 行,格式
为 X 行
,在多个示例中使用。
1..100 | ForEach-Object { Add-Content -Path .\LineNumbers.txt -Value "This is line $_." }
Get-Content -Path .\LineNumbers.txt
This is Line 1
This is Line 2
This is line 99.
This is line 100.
数组值 1-100 在管道中向下发送到
ForEach-Object
cmdlet。
ForEach-Object
将脚本块与 cmdlet 配合使用
Add-Content
来创建
LineNumbers.txt
文件。
$_
变量表示数组值,因为每个对象在管道中向下发送。 cmdlet
Get-Content
使用
Path
参数指定
LineNumbers.txt
文件并在 PowerShell 控制台中显示内容。
示例 2:限制Get-Content返回的行数
此命令获取文件的前五行。
TotalCount
参数用于获取前五行内容。 此示例使用在
LineNumbers.txt
示例 1 中创建的文件。
Get-Content -Path .\LineNumbers.txt -TotalCount 5
This is Line 1
This is Line 2
This is Line 3
This is Line 4
This is Line 5
示例 3:从文本文件获取特定内容行
此命令从文件中获取特定数量的行,然后仅显示该内容的最后一行。
TotalCount
参数获取前 25 行内容。 此示例使用在
LineNumbers.txt
示例 1 中创建的文件。
(Get-Content -Path .\LineNumbers.txt -TotalCount 25)[-1]
This is Line 25
命令
Get-Content
用括号包装,以便命令在转到下一步之前完成。
Get-Content
返回一个行数组,这使你可以在括号后面添加索引表示法以检索特定的行号。 在这种情况下,
[-1]
索引指定返回的 25 个检索行数组中的最后一个索引。
示例 4:获取文本文件的最后一行
此命令从文件获取最后一行内容。 此示例使用在
LineNumbers.txt
示例 1 中创建的文件。
Get-Item -Path .\LineNumbers.txt | Get-Content -Tail 1
This is Line 100
此示例使用
Get-Item
cmdlet 来演示可以通过管道将文件传递到
Get-Content
参数中。
Tail
参数获取文件的最后一行。 此方法比检索
[-1]
所有行并使用索引表示法更快。
示例 5:获取备用数据流的内容
此示例介绍如何使用
Stream
参数获取存储在 Windows NTFS 卷上的文件的备用数据流的内容。 在此示例中,
Set-Content
cmdlet 用于在名为
Stream.txt
的 文件中创建示例内容。
Set-Content -Path .\Stream.txt -Value 'This is the content of the Stream.txt file'
# Specify a wildcard to the Stream parameter to display all streams of the recently created file.
Get-Item -Path .\Stream.txt -Stream *
PSPath : Microsoft.PowerShell.Core\FileSystem::C:\Test\Stream.txt::$DATA
PSParentPath : Microsoft.PowerShell.Core\FileSystem::C:\Test
PSChildName : Stream.txt::$DATA
PSDrive : C
PSProvider : Microsoft.PowerShell.Core\FileSystem
PSIsContainer : False
FileName : C:\Test\Stream.txt
Stream : :$DATA
Length : 44
# Retrieve the content of the primary, or $DATA stream.
Get-Content -Path .\Stream.txt -Stream $DATA
This is the content of the Stream.txt file
# Use the Stream parameter of Add-Content to create a new Stream containing sample content.
Add-Content -Path .\Stream.txt -Stream NewStream -Value 'Added a stream named NewStream to Stream.txt'
# Use Get-Item to verify the stream was created.
Get-Item -Path .\Stream.txt -Stream *
PSPath : Microsoft.PowerShell.Core\FileSystem::C:\Test\Stream.txt::$DATA
PSParentPath : Microsoft.PowerShell.Core\FileSystem::C:\Test
PSChildName : Stream.txt::$DATA
PSDrive : C
PSProvider : Microsoft.PowerShell.Core\FileSystem
PSIsContainer : False
FileName : C:\Test\Stream.txt
Stream : :$DATA
Length : 44
PSPath : Microsoft.PowerShell.Core\FileSystem::C:\Test\Stream.txt:NewStream
PSParentPath : Microsoft.PowerShell.Core\FileSystem::C:\Test
PSChildName : Stream.txt:NewStream
PSDrive : C
PSProvider : Microsoft.PowerShell.Core\FileSystem
PSIsContainer : False
FileName : C:\Test\Stream.txt
Stream : NewStream
Length : 46
# Retrieve the content of your newly created Stream.
Get-Content -Path .\Stream.txt -Stream NewStream
Added a stream named NewStream to Stream.txt
Stream
参数是
FileSystem 提供程序
的动态参数。
默认情况下
Get-Content
,仅从主数据库或
$DATA
流中检索数据。
流
可用于存储隐藏数据,例如属性、安全设置或其他数据。
示例 6:获取原始内容
此示例中的命令将文件的内容作为一个字符串获取,而不是一个字符串数组。 默认情况下,如果没有
Raw
动态参数,内容将作为换行符分隔的字符串数组返回。 此示例使用在
LineNumbers.txt
示例 1 中创建的文件。
$raw = Get-Content -Path .\LineNumbers.txt -Raw
$lines = Get-Content -Path .\LineNumbers.txt
Write-Host "Raw contains $($raw.Count) lines."
Write-Host "Lines contains $($lines.Count) lines."
Raw contains 1 lines.
Lines contains 100 lines.
示例 7:将筛选器与Get-Content
可以指定 cmdlet 的
Get-Content
筛选器。 使用筛选器限定
Path
参数时,需要包含尾随星号 (
*
) 以指示路径的内容。
以下命令获取目录中所有
*.log
文件
C:\Temp
的内容。
Get-Content -Path C:\Temp\* -Filter *.log
示例 8:获取作为字节数组的文件内容
此示例演示如何将文件的内容作为
[byte[]]
单个对象获取。
$byteArray = Get-Content -Path C:\temp\test.txt -Encoding Byte -Raw
Get-Member -InputObject $bytearray
TypeName: System.Byte[]
Name MemberType Definition
---- ---------- ----------
Count AliasProperty Count = Length
Add Method int IList.Add(System.Object value)
第一个命令使用
Encoding
参数从文件获取字节流。
Raw
参数确保以 的形式
[System.Byte[]]
返回字节。 如果
Raw
参数不存在,则返回值是字节流,PowerShell 将其解释为
[System.Object[]]
。
-Credential
随 PowerShell 一起安装的任何提供程序都不支持此参数。
若要模拟其他用户,或在运行此 cmdlet 时提升凭据,请使用
Invoke-Command
。
-Delimiter
指定用于在读取文件时将文件划分为对象的分隔符
Get-Content
。 默认值为
\n
,行尾字符。 读取文本文件时,
Get-Content
返回字符串对象的集合,其中每个对象以行尾字符结尾。 输入文件中不存在的分隔符时,
Get-Content
会将整个文件作为单个未托管的对象返回。
可以使用此参数将大文件拆分为较小的文件,方法是将文件分隔符指定为分隔符。 分隔符将被保留(不会被丢弃),并且成为每个文件部分中的最后一项。
分隔符
是
FileSystem
提供程序添加到 cmdlet 中的
Get-Content
动态参数。 此参数仅在文件系统驱动器中有效。
目前,当
Delimiter
参数的值为空字符串时,
Get-Content
不会返回任何内容。 这是已知问题。 强制
Get-Content
以单个未托管字符串的形式返回整个文件。 输入文件中不存在的值。
Default value:End-of-line character
Accept pipeline input:False
Accept wildcard characters:False
-Encoding
指定目标文件的编码类型。 默认值为
Default
。
此参数的可接受值如下所示:
Ascii
使用 ASCII (7 位) 字符集。
BigEndianUnicode
将 UTF-16 与 big-endian 字节顺序一起使用。
BigEndianUTF32
将 UTF-32 与 big-endian 字节顺序一起使用。
Byte
将一组字符编码为字节序列。
Default
使用与系统的活动代码页相对应的编码 (通常为 ANSI) 。
Oem
使用对应于系统的当前 OEM 代码页的编码。
String
与
Unicode
相同。
Unicode
将 UTF-16 与 little-endian 字节顺序一起使用。
Unknown
与
Unicode
相同。
UTF7
使用 UTF-7。
UTF8
使用 UTF-8。
UTF32
将 UTF-32 与 little-endian 字节顺序一起使用。
编码是
FileSystem
提供程序添加到 cmdlet 的
Get-Content
动态参数。
此参数仅在文件系统驱动器中有效。
从二进制文件读取和写入文件时,将
Byte
值用于
编码
动态参数,对
ReadCount
参数使用值 0。
ReadCount
值 0 在单个读取操作中读取整个文件,并将其转换为 PSObject) (单个对象。 默认
ReadCount
值 1 在每次读取操作中读取一个字节,并将每个字节转换为单独的对象,这在使用
Set-Content
cmdlet 将字节写入文件时会导致错误。
Type:
FileSystemCmdletProviderEncoding
Accepted values:ASCII, BigEndianUnicode, BigEndianUTF32, Byte, Default, OEM, String, Unicode, Unknown, UTF7, UTF8, UTF32
Position:Named
Default value:Default
Accept pipeline input:False
Accept wildcard characters:False
-Exclude
指定此 cmdlet 在操作中排除的一个或多个项作为字符串数组。
此参数值使
Path
参数有效。
请输入路径元素或模式,例如
*.txt
。
允许使用通配符。
仅当命令包含项的内容(例如
C:\Windows\*
),其中通配符指定目录的内容
C:\Windows
时,
Exclude
参数才有效。
Type:
String
[
]
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:True
-Filter
指定用于限定
Path
参数的筛选器。
FileSystem
提供程序是唯一支持使用筛选器的已安装 PowerShell 提供程序。 可以在
about_Wildcards
中找到
FileSystem
筛选器语言的语法。
筛选器比其他参数更高效,因为提供程序在 cmdlet 获取对象时应用它们,而不是在检索对象后让 PowerShell 筛选对象。
Type:
String
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:True
-Force
强制
将替代只读属性或创建目录以完成文件路径。
Force
参数不会尝试更改文件权限或覆盖安全限制。
Type:
SwitchParameter
Position:Named
Default value:False
Accept pipeline input:False
Accept wildcard characters:False
-Include
指定此 cmdlet 将在操作中包含的一个项或多个项(作为一个字符串数组)。 此参数值使
Path
参数有效。 请输入路径元素或模式,例如
"*.txt"
。 允许使用通配符。 仅当命令包含项的内容(例如
C:\Windows\*
),其中通配符指定目录的内容
C:\Windows
时,
Include
参数才有效。
Type:
String
[
]
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:True
-LiteralPath
指定一个或多个位置的路径。
LiteralPath
的值与键入时完全相同。 不会将任何字符解释为通配符。 如果路径包括转义符,请将其括在单引号中。 单引号告知 PowerShell 不要将任何字符解释为转义序列。
有关详细信息,请参阅
about_Quoting_Rules
。
Type:
String
[
]
Aliases:PSPath
Position:Named
Default value:None
Accept pipeline input:True
Accept wildcard characters:False
-Path
指定获取内容的项
Get-Content
的路径。 允许使用通配符。 此路径必须是指向该项的路径,而不是容器的路径。 例如,必须指定一个或多个文件的路径,而不是目录的路径。
Type:
String
[
]
Position:0
Default value:None
Accept pipeline input:True
Accept wildcard characters:True
忽略换行符,并在一个字符串中返回文件的全部内容,并保留换行符。 默认情况下,文件中的换行符用作分隔符,将输入分隔成字符串数组。 此参数是在 PowerShell 3.0 中引入的。
Raw
是
FileSystem
提供程序添加到 cmdlet 的
Get-Content
动态参数。此参数仅适用于文件系统驱动器。
Type:
SwitchParameter
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False
-ReadCount
指定每次通过管道发送的内容行数。 默认值为 1。
值 0(零)将一次发送所有内容。
此参数不会更改显示的内容,但会影响显示内容所用的时间。 随着
ReadCount
的值增加,返回第一行所用的时间将会增加,但该操作的总计时间将会减少。 这在大型项中可能会产生明显的差异。
Type:
Int64
Position:Named
Default value:1
Accept pipeline input:True
Accept wildcard characters:False
-Stream
从文件中获取指定的备用 NTFS 文件流的内容。 输入流名称。
不支持通配符。
Stream
是
FileSystem
提供程序添加到 cmdlet 的
Get-Content
动态参数。
此参数仅适用于 Windows 系统上的文件系统驱动器。 已在 Windows PowerShell 3.0 中引入了此参数。
Type:
String
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False
-Tail
从文件或其他项的结尾处指定行数。 可以使用
Tail
参数名称或其别名
Last
。 此参数是在 PowerShell 3.0 中引入的。
Type:
Int32
Aliases:Last
Position:Named
Default value:None
Accept pipeline input:True
Accept wildcard characters:False
-TotalCount
从文件或其他项的开始处指定行数。 默认值为 -1(所有行)。
可以使用
TotalCount
参数名称或其别名
,First
或
Head
。
Type:
Int64
Aliases:First, Head
Position:Named
Default value:-1
Accept pipeline input:True
Accept wildcard characters:False
-UseTransaction
在活动事务中使用该命令。 仅当正在执行事务时,此参数才有效。 有关详细信息,请参阅
about_Transactions
。
Type:
SwitchParameter
Aliases:usetx
Position:Named
Default value:False
Accept pipeline input:False
Accept wildcard characters:False
-Wait
输出所有现有行后,使文件保持打开状态。 等待时,
Get-Content
每秒检查一次文件,并输出新行(如果存在)。 可以通过按
Ctrl+C
来中断
等待
。 如果文件被删除,则等待也会结束,在这种情况下,将报告非终止错误。
Wait
是 FileSystem 提供程序添加到 cmdlet 中的
Get-Content
动态参数。 此参数仅在文件系统驱动器中有效。
Wait
不能与
Raw
组合使用。
Type:
SwitchParameter
Position:Named
Default value:False
Accept pipeline input:False
Accept wildcard characters:False
Int64
可以通过管道将读取计数或总计数传递给此 cmdlet。
String
[
]
可以通过管道路径连接到此 cmdlet。
PSCredential
可以通过管道将凭据传递给此 cmdlet。
使用
AsByteStream
参数时,此 cmdlet 以字节的形式返回内容。
String
默认情况下,此 cmdlet 以字符串数组的形式返回内容,每行一个。 使用
Raw
参数时,它将返回包含文件中每一行的单个字符串。
Windows PowerShell包含以下别名
Get-Content
:
该
Get-Content
cmdlet 旨在处理任何提供程序公开的数据。 若要在会话中获取提供程序,请使用
Get-PSProvider
cmdlet。 有关详细信息,请参阅
about_Providers
。
about_Automatic_Variables
about_Providers
Add-Content
Clear-Content
ForEach-Object
Get-PSProvider
Set-Content