Windows 2008サーバーで「C、E、L、S、T、W」ではないすべてのドライブ文字を検索しようとしています。誰かが私の論理の誤りを教えてもらえますか、またはどうすればこれを行うことができますか?
[char[]]”CELSTW” | Where-Object {!(Get-PSDrive $_ )}
Windows 2008サーバーで「C、E、L、S、T、W」ではないすべてのドライブ文字を検索しようとしています。誰かが私の論理の誤りを教えてもらえますか、またはどうすればこれを行うことができますか?
[char[]]”CELSTW” | Where-Object {!(Get-PSDrive $_ )}
不要なドライブ文字のリスト(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"}
これにより、名前(ドライブレター)が「C、E、L、S、T、W」ではないすべてのpsdriveが表示されます。
Get-PSDrive | ?{[char[]]"CELSTW" -notcontains $_.name}
ただし、ファイルシステム以外のpsdriveを除外する場合は、次のことを試してください。
Get-PSDrive | ?{[char[]]"CELSTW" -notcontains $_.name} | ?{$_.Provider.name -eq "FileSystem"}
あなたはもう一方の端からこれに行かなければなりません:
$drives = [char[]]"CD"
Get-PSDrive | ? { $drives -notcontains $_.Name}
-notmatch演算子を使用した別の例:
Get-PSDrive | Where-Object { $_.Name -notmatch '[CELSTW]'}