Get-Item

获取位于指定位置的项。

语法

Get-Item
   [-Path] <string[]>
   [-Filter <string>]
   [-Include <string[]>]
   [-Exclude <string[]>]
   [-Force]
   [-Credential <pscredential>]
   [-Stream <string[]>]
   [<CommonParameters>]
Get-Item
   -LiteralPath <string[]>
   [-Filter <string>]
   [-Include <string[]>]
   [-Exclude <string[]>]
   [-Force]
   [-Credential <pscredential>]
   [-Stream <string[]>]
   [<CommonParameters>]
Get-Item
   [-Path] <string[]>
   [-Filter <string>]
   [-Include <string[]>]
   [-Exclude <string[]>]
   [-Force]
   [-Credential <pscredential>]
   [-CodeSigningCert]
   [-DocumentEncryptionCert]
   [-SSLServerAuthentication]
   [-DnsName <string>]
   [-Eku <string[]>]
   [-ExpiringInDays <int>]
   [<CommonParameters>]
Get-Item
   -LiteralPath <string[]>
   [-Filter <string>]
   [-Include <string[]>]
   [-Exclude <string[]>]
   [-Force]
   [-Credential <pscredential>]
   [-CodeSigningCert]
   [-DocumentEncryptionCert]
   [-SSLServerAuthentication]
   [-DnsName <string>]
   [-Eku <string[]>]
   [-ExpiringInDays <int>]
   [<CommonParameters>]
Get-Item
   [-Path] <string[]>
   [-Filter <string>]
   [-Include <string[]>]
   [-Exclude <string[]>]
   [-Force]
   [-Credential <pscredential>]
   [<CommonParameters>]
Get-Item
   -LiteralPath <string[]>
   [-Filter <string>]
   [-Include <string[]>]
   [-Exclude <string[]>]
   [-Force]
   [-Credential <pscredential>]
   [<CommonParameters>]

说明

Get-Item cmdlet 获取位于指定位置的项。 除非使用通配符 (*) 来请求该项的所有内容,否则此命令不会获取位于该位置的项的内容。

PowerShell 提供程序通过使用此 cmdlet,可以在不同类型的数据存储进行导航。 某些参数仅适用于特定提供程序。 有关详细信息,请参阅 about_Providers

示例

示例 1:获取当前目录

此示例获取当前目录。 句点 ('.') 表示当前位置处的项(而非其内容)。

Get-Item .

Directory: C:\

Mode                LastWriteTime     Length Name
----                -------------     ------ ----
d----         7/26/2006  10:01 AM            ps-test

示例 2:获取当前目录中的所有项

此示例将获取当前目录中的所有项。 通配符 (*) 表示当前项的所有内容。

Get-Item *

Directory: C:\ps-test

Mode                LastWriteTime     Length Name
----                -------------     ------ ----
d----         7/26/2006   9:29 AM            Logs
d----         7/26/2006   9:26 AM            Recs
-a---         7/26/2006   9:28 AM         80 date.csv
-a---         7/26/2006  10:01 AM         30 filenoext
-a---         7/26/2006   9:30 AM      11472 process.doc
-a---         7/14/2006  10:47 AM         30 test.txt

示例 3:获取驱动器的当前目录

此示例获取 C: 驱动器的当前目录。 检索到的对象仅表示目录,而不表示其内容。

Get-Item C:

示例 4:获取指定驱动器中的项

此示例获取 C: 驱动器中的项。 通配符 (*) 表示容器中的所有项,而不仅仅表示容器。

Get-Item C:\*

在 PowerShell 中,使用单个星号 (*) 来获取内容,而不使用传统的 *.*。 格式是按字面意思解释的,因此 *.* 将不会检索没有点的目录或文件名。

示例 5:获取指定目录中的属性

此示例获取 C:\Windows 目录的 LastAccessTime 属性。 LastAccessTime 只是文件系统目录的一个属性。 若要查看目录的所有属性,请键入 (Get-Item <directory-name>) | Get-Member

(Get-Item C:\Windows).LastAccessTime

示例 6:显示注册表项的内容

此示例显示 Microsoft.PowerShell 注册表项的内容。 可以将此 cmdlet 与 PowerShell 注册表提供程序一起使用以获取注册表项和子项,但必须使用 Get-ItemProperty cmdlet 来获取注册表值和数据。

Get-Item HKLM:\Software\Microsoft\Powershell\1\Shellids\Microsoft.Powershell\

示例 7:获取目录中具有排除项的项

此示例获取 Windows 目录中的其名称包含点 (.) 但不以 w* 开头的项。此示例只有在路径包括通配符 (*) 以指定项的内容的情况下才起作用。

Get-Item C:\Windows\*.* -Exclude "w*"

示例 8:获取硬链接信息

在 PowerShell 6.2 中,添加了用于获取硬链接信息的备用视图。 若要获取硬链接信息,请通过管道将输出传递给 Format-Table -View childrenWithHardlink

Get-Item C:\Windows\System32\ntoskrnl.exe | Format-Table -view childrenWithHardLink

Directory: C:\Windows\System32

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
la---           5/12/2021  7:40 AM       10848576 ntoskrnl.exe

Mode 属性通过 la--- 中的 l 来标识硬链接

示例 9:非 Windows 操作系统的输出

在 Unix 系统上的 PowerShell 7.1 中,Get-Item cmdlet 提供类似于 Unix 的输出:

PS> Get-Item /Users

Directory: /

UnixMode    User  Group   LastWriteTime      Size  Name
--------    ----  -----   -------------      ----  ----
drwxr-xr-x  root  admin   12/20/2019 11:46   192   Users

现在属于输出的一部分的新属性包括:

  • UnixMode 是 Unix 系统上表示的文件权限
  • User 是文件所有者
  • Group 是组所有者
  • Size 是 Unix 系统上表示的文件或目录的大小

注意

在 PowerShell 7.1 中,此功能已从实验性功能转变为主要功能。

参数

-CodeSigningCert

这是证书提供程序提供的动态参数。 此参数和 Certificate 提供程序仅在 Windows 上可用。

若要获取 EnhancedKeyUsageList 属性值中具有 Code Signing 的证书,请使用 CodeSigningCert 参数。

有关详细信息,请参阅 about_Certificate_Provider

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Credential

注意

随同 PowerShell 一起安装的任何提供程序都不支持此参数。 若要模拟其他用户,或在运行此 cmdlet 时提升凭据,请使用 Invoke-Command

Type:PSCredential
Position:Named
Default value:Current user
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-DnsName

这是证书提供程序提供的动态参数。 此参数和 Certificate 提供程序仅在 Windows 上可用。

指定与 cmdlet 获取的证书 DNSNameList 属性匹配的域名或名称模式。 该参数的值可以是 UnicodeASCII。 Punycode 值将转换为 Unicode。 允许使用通配符 (*)。

此参数是在 PowerShell 7.1 中引入的

有关详细信息,请参阅 about_Certificate_Provider

Type:DnsNameRepresentation
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:True

-DocumentEncryptionCert

这是证书提供程序提供的动态参数。 此参数和 Certificate 提供程序仅在 Windows 上可用。

若要获取 EnhancedKeyUsageList 属性值中具有 Document Encryption 的证书,请使用 DocumentEncryptionCert 参数。

有关详细信息,请参阅 about_Certificate_Provider

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Eku

这是证书提供程序提供的动态参数。 此参数和 Certificate 提供程序仅在 Windows 上可用。

指定与 cmdlet 获取的证书 EnhancedKeyUsageList 属性匹配的文本或文本模式。 允许使用通配符 (*)。 EnhancedKeyUsageList 属性包含 EKU 的易记名称和 OID 字段。

此参数是在 PowerShell 7.1 中引入的

有关详细信息,请参阅 about_Certificate_Provider

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:True

-Exclude

指定此 cmdlet 将在操作中排除的一个项或多个项(作为一个字符串数组)。 此参数值使 Path 参数有效。 请输入路径元素或模式,例如 *.txt。 允许使用通配符。 仅当该命令包括项的内容时(例如 C:\Windows\*,其中通配符指定 C:\Windows 目录的内容),Exclude 参数才有效。

Type:String[]
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:True

-ExpiringInDays

这是证书提供程序提供的动态参数。 此参数和 Certificate 提供程序仅在 Windows 上可用。

指定该 cmdlet 仅应返回将在指定天数内或之前过期的证书。 值 0 (0) 将获取已过期的证书。

此参数是在 PowerShell 7.1 中引入的

有关详细信息,请参阅 about_Certificate_Provider

Type:Int32
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Filter

指定用于限定 Path 参数的筛选器。 FileSystem 提供程序是唯一支持筛选器的已安装 PowerShell 提供程序。 筛选器比其他参数更高效。 该提供程序在 cmdlet 获取对象时应用筛选器,而不是在检索对象后让 PowerShell 筛选对象。 筛选器字符串将传递给 .NET API 以枚举文件。 该 API 仅支持 *? 通配符。

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:True

-Force

指示此 cmdlet 获取无法访问的项目,如隐藏项。 不同提供程序有不同的实现。 有关详细信息,请参阅 about_Providers。 即使使用 Force 参数,该 cmdlet 也无法覆盖安全限制。

Type:SwitchParameter
Position:Named
Default value:False
Required: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
Required:False
Accept pipeline input:False
Accept wildcard characters:True

-LiteralPath

指定一个或多个位置的路径。 LiteralPath 的值严格按照所键入的形式使用。 不会将任何字符解释为通配符。 如果路径包括转义符,请将其括在单引号中。 单引号告知 PowerShell 不要将任何字符解释为转义序列。

有关详细信息,请参阅 about_Quoting_Rules

Type:String[]
Aliases:PSPath, LP
Position:Named
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-Path

指定项的路径。 此 cmdlet 获取位于指定位置的项。 允许使用通配符。 此参数为必需参数,但参数名 Path 为可选项。

使用句点 (.) 来指定当前位置。 使用通配符 (*) 可以指定当前位置中的所有项。

Type:String[]
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:True

-SSLServerAuthentication

这是证书提供程序提供的动态参数。 此参数和 Certificate 提供程序仅在 Windows 上可用。

若要获取 EnhancedKeyUsageList 属性值中具有 Server Authentication 的证书,请使用 SSLServerAuthentication 参数。

有关详细信息,请参阅 about_Certificate_Provider

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Stream

这是 FileSystem 提供程序提供的动态参数。 此参数仅在 Windows 上可用。

从文件中获取指定的备用数据流。 输入流名称。 支持通配符。 若要获取所有流,请使用星号 (*)。 此参数在目录上有效,但请注意,默认情况下目录没有数据流。

此参数是在 PowerShell 3.0 中引入的。 从 PowerShell 7.2 起,Get-Item 可以从目录和文件中获取备用数据流。

有关详细信息,请参阅 about_FileSystem_Provider

Type:String[]
Position:Named
Default value:No alternate file streams
Required:False
Accept pipeline input:False
Accept wildcard characters:True

输入

String

可以通过管道将包含路径的字符串传递给此 cmdlet。

输出

AliasInfo

该 cmdlet 在访问 Alias: 驱动器时输出此类型。

X509StoreLocation

X509Store

X509Certificate2

该 cmdlet 在访问 Cert: 驱动器时输出这些类型。

DictionaryEntry

该 cmdlet 在访问 Env: 驱动器时输出此类型。

DirectoryInfo

FileInfo

该 cmdlet 在访问 Filesystem 驱动器时输出这些类型。

FunctionInfo

FilterInfo

该 cmdlet 在访问 Function: 驱动器时输出这些类型。

RegistryKey

该 cmdlet 在访问注册表驱动器时输出此类型。

PSVariable

该 cmdlet 在访问 Variable: 驱动器时输出此类型。

WSManConfigContainerElement

WSManConfigLeafElement

该 cmdlet 在访问 WSMan: 驱动器时输出这些类型。

备注

PowerShell 包含 Get-Item 的以下别名:

  • 所有平台:
    • gi

此 cmdlet 没有 Recurse 参数,因为它只获取项,而不获取其内容。 若要递归获取项的内容,请使用 Get-ChildItem

若要在注册表中导航,请使用此 cmdlet 来获取注册表项,使用 Get-ItemProperty 来获取注册表值和数据。 注册表值被视为注册表项的属性。

此 cmdlet 用于处理由任何提供程序公开的数据。 若要列出会话中可用的提供程序,请键入 Get-PsProvider。 有关详细信息,请参阅 about_Providers