为什么Get-content支持-wait参数?

时间:2014-04-20 05:26:46

标签: powershell parameters powershell-v2.0

在Powershell V2中获取Get-content的帮助时,我找不到-Wait参数。虽然我可以将此参数与相同的cmdlet一起使用。这肯定不是常见的参数之一。

NAME
    Get-Content

SYNOPSIS
    Gets the content of the item at the specified location.

SYNTAX
    Get-Content [-LiteralPath] <string[]> [-Credential <PSCredential>] [-Exclude <string[]>] [-Filter <string>] [-Force
    ] [-Include <string[]>] [-ReadCount <Int64>] [-TotalCount <Int64>] [-UseTransaction] [<CommonParameters>]

    Get-Content [-Path] <string[]> [-Credential <PSCredential>] [-Exclude <string[]>] [-Filter <string>] [-Force] [-Inc
    lude <string[]>] [-ReadCount <Int64>] [-TotalCount <Int64>] [-UseTransaction] [<CommonParameters>]

我能找到的唯一的命令行开关,在Powershell V2中明确提到-Wait参数的地方是Start-process

get-content调用启动过程是否在引擎盖下?我如何在Get-content中使用-Wait参数?

这可能有助于发现“帮助”中未提及的其他参数,但可以与该cmdlet一起使用。 在此先感谢您的帮助!

3 个答案:

答案 0 :(得分:5)

此版本的PowerShell中添加了此开关的文档。这是PS 4.0。

PS > Get-Help Get-Content -Parameter wait

-Wait [<SwitchParameter>]
    Waits for the cmdlet to get the content before returning the command prompt. While waiting, Get-Content checks the
    file once each second until you interrupt it, such as by pressing CTRL+C.

    Wait is a dynamic parameter that the FileSystem provider adds to the Get-Content cmdlet. This parameter works only
    in file system drives.

    Required?                    false
    Position?                    named
    Default value                False
    Accept pipeline input?       false
    Accept wildcard characters?  false

答案 1 :(得分:1)

看起来'raw'和'wait'都是动态参数。并且,'wait'在后台使用FileSystemWatcher。它等待更改的默认时间似乎是500毫秒。

一次,它超时;线程再睡眠100ms,然后寻找流的开始并丢弃缓冲区。

<强>参考: 通过阅读PowerShell MVP Oisin Grehan的博客“直接跳转到Cmdlet在Reflector中实现的技巧”'Reflect-Cmdlet'

另外,请阅读以下问题:can we see the source code for PowerShell cmdlets

答案 2 :(得分:0)

正如@sqlchow指出的那样,-wait是get-content的动态参数,只能根据可用的文档Here与文件系统提供程序一起使用。
即,如果您在注册表提供程序中,则不能将此参数与get-content一起使用(至少在Powershell V2中)

PS C:\> cd HKLM:\
PS HKLM:\> Get-Content -Wait
Get-Content : A parameter cannot be found that matches parameter name 'Wait'.

我们可以看到注册管理机构提供商无法等待。

Ed Wilson在How to find Dynamic Paramters

上发表了一篇不错的博客文章