5

状況:

  1. Get-ChildItem $Path -Filter *.dll私のために働く

  2. これは機能します:

    $Path = "$env:windir\system32\*"
    $GuyArray = @("*.dll", "*.exe")
    
    Get-ChildItem $Path -Include $GuyArray
    
  3. しかし、私はこれを機能させることができません:

    $Path = "$env:windir\system32\*"
    $GuyArray = @("*.dll", "*.exe")
    
    Get-ChildItem $Path -Filter $GuyArray
    

エラーメッセージ:

'System.Object[]'をパラメーター'Filter'に必要なタイプ'System.String'に変換できません。指定された方法はサポートされていません。

質問:

  1. -Includeこれは、複数の値をサポートしているが、-Filter1つの値しか許可していないことを意味しますか?
  2. 上記の説明が正しければ、これを発見する方法はありGet-Help gciますか?
4

3 に答える 3

4

-Includeこれは、複数の値をサポートしているが、-Filter1つの値しか許可していないことを意味しますか?

はい。

上記の説明が正しければ、これを発見する方法はありGet-Help gciますか?

はい。ただし、によって多くの情報を取得することはありませんGet-Help gci -Parameter Filter。しかし、それでも配列ではなく文字列であることがわかります。詳細Filterは、プロバイダー固有のフィルターです。Get-Help gci特定のプロバイダーでの実装については何も言えません。理論的には、Get-Help FileSystem(このプロバイダーに関するヘルプ)がこれを説明しているはずです。

PSこのフィルターは、PowerShellワイルドカードルールではなくCMDワイルドカードルールを使用することにも注意してください。

于 2012-10-12T12:29:08.610 に答える
1

使用Get-Help

> get-help Get-ChildItem

NAME
    Get-ChildItem

SYNTAX
    Get-ChildItem [[-Path] <string[]>] [[-Filter] <string>] [-Exclude <string[]>] [-Force] [-Include <string[]>] [-Name] [-Recurse] [-UseTransaction] [<CommonParameters>]

FilterSYNTAXセクションには、文字列であることがわかるパラメータタイプとPath配列が含まれています。

于 2012-10-12T12:23:34.383 に答える
1

質問1:

はい。-Filter入力としてのみ受け入れ[string]ます。-Includeを受け入れます[String[]]

質問2:

Get-help get-childitem -parameter filter与える

-Filter <string>
...explanation...

Get-help get-childitem -parameter include与える

-Include <string[]>
...explanation...
于 2012-10-12T12:24:18.550 に答える