powershell:get-psdrive和where-object

res*_*101 1 windows powershell logic

我试图在Windows 2008服务器上找到不是"C,E,L,S,T,W"的每个驱动器号.谁能告诉我我的逻辑中的错误或我怎么能这样做呢?

[char[]]”CELSTW” | Where-Object {!(Get-PSDrive $_ )} 
Run Code Online (Sandbox Code Playgroud)

小智 5

您将开始使用您不想要的驱动器号列表(CELSTW)并输出那些不存在的驱动器号作为psdrive.

你想要的是从所有PSDrives的列表开始,并过滤掉它们与你不想要的匹配的地方:

Get-PSDrive | Where-Object { [char[]]"CELSTW" -notcontains $_.Name }
Run Code Online (Sandbox Code Playgroud)

虽然这会给你一堆其他的PSDrive类型.您可能还想为FileSystem提供程序过滤它:

 Get-PSDrive | Where-Object { [char[]]"CELSTW" -notcontains $_.Name -AND $_.Provider.Name -eq "FileSystem"}
Run Code Online (Sandbox Code Playgroud)