1

Windows 2008サーバーで「C、E、L、S、T、W」ではないすべてのドライブ文字を検索しようとしています。誰かが私の論理の誤りを教えてもらえますか、またはどうすればこれを行うことができますか?

[char[]]”CELSTW” | Where-Object {!(Get-PSDrive $_ )} 
4

4 に答える 4

6

不要なドライブ文字のリスト(CELSTW)から始めて、psdriveとして存在しないものを出力します。

必要なのは、すべてのPSDriveのリストから始めて、不要なPSDriveと一致する場所でそれらをフィルターで除外することです。

Get-PSDrive | Where-Object { [char[]]"CELSTW" -notcontains $_.Name }

それはあなたに他のPSDriveタイプの束を与えるつもりですが。おそらく、ファイルシステムプロバイダー用にフィルターすることもできます。

 Get-PSDrive | Where-Object { [char[]]"CELSTW" -notcontains $_.Name -AND $_.Provider.Name -eq "FileSystem"}
于 2012-05-11T21:47:57.217 に答える
1

これにより、名前(ドライブレター)が「C、E、L、S、T、W」ではないすべてのpsdriveが表示されます。

Get-PSDrive  | ?{[char[]]"CELSTW" -notcontains $_.name}

ただし、ファイルシステム以外のpsdriveを除外する場合は、次のことを試してください。

Get-PSDrive  | ?{[char[]]"CELSTW" -notcontains $_.name} | ?{$_.Provider.name -eq "FileSystem"}
于 2012-05-11T21:45:13.503 に答える
0

あなたはもう一方の端からこれに行かなければなりません:

$drives = [char[]]"CD"
Get-PSDrive | ? { $drives -notcontains $_.Name}
于 2012-05-11T21:44:52.557 に答える
0

-notmatch演算子を使用した別の例:

Get-PSDrive | Where-Object { $_.Name -notmatch '[CELSTW]'}
于 2012-05-12T09:07:30.437 に答える