のは、ファイルシステムの例を見てみましょう: PS> dir foo* Directory: C:\Users\jimtru\AppData\Local\Temp Mode LastWriteTime Length Name ---- ------------- ------ ---- -a---- 6/1/2016 11:11 AM 11 foo[bar].'baz' -a---- 6/1/2016 11:13 AM 8 foo[bar].`baz`
注意すべき最初の事は、引用符(シングルおよびバックがあるありますあなただけの彼らの内容を取得しようとした場合)、単純にレンダリングされ、出力にエスケープメントを示す追加の文字が、しかし、これらはPowerShellのに胸焼けのビットを引き起こさないかもしれません:
周りにいくつかの方法があります
PS> get-content foo[bar].'baz' get-content : An object at the specified path foo[bar].baz... PS> get-content foo[bar].`baz`... get-content : An object at the specified path foo[bar]az`
この。一部のコマンドレットでは、-LiteralPath
を提供しています。 PS> get-content -LiteralPath "foo[bar].'baz'" sdflkj
この文字列の前後に二重引用符を使用しています。これは、一重引用符が文字列要素として扱われるため、'foo'
はfoo
に置き換えられます。二重引用符は、パーサーが文字列全体を参照する必要があることを示します(二重引用符と二重引用符)。続行する別の方法は、エスケープ文字(バッククォート)を使用することです。 PS> get-content 'foo`[bar`].`baz`' sdflkj
同一のパスについては、回避することをお勧めします。あるエンティティを別のエンティティと区別するためには、何らかの方法が必要です。作成するパスは、リソース固有のものであることを確認する必要があります。プロバイダーでこのパスを構築するので、プロバイダーの一部として曖昧さのない機能を追加することができます。
最後に、ファイルシステム上のパスとして表現できる長さには制限があります。 AFIKでは、パス以外のパスには制限がありません
ドキュメントが[ここ](https://msdn.microsoft.com/en-us/library/ee126186(v=vs.85) .aspx) 1)パスエスケープは、文字列の入力方法と同じです。そうでない場合は、プロバイダでこれを処理する必要があると思います。 2)プロバイダのフレームワークが明示的にパスを制限しているとは思いません。 4)プロバイダはこれをどのように処理するかを理解する必要があります。 2つのアイテムがある場合、どのようにGet-Itemを処理しますか? – TravisEz13
@ TravisPlunk、about 4)これらはオブジェクトなので、プログラムで保持してフィルタリングすることができます。彼らは一意性を持っていますが、一意性は単にその名の通りではありません。一例として、多くの電子メールは同じタイトルを持つことができますが、固有のIDは異なることがあります。電子メールのタイトルはPowerShellの名前に自然にマッピングされているようです。 PowerShellでこれが受け入れられることを確認したいだけです。 – bright
@ TravisPlunk、あなたのコメントを回答として書き直すことを検討してください。約1)あなたが提供したリンクのパス区切り記号をエスケープする情報が見つかりませんでした。私は何か見落としてますか?ありがとう。 – bright