2013-08-30 43 views
1

我正在用Powershell编写一个小脚本。只得到分区标签

该脚本正在获取驱动器号并将它们与一些附加代码一起导出到批处理文件中的临时目录中。

下面是一个例子:

$TempFolderSavePath = $env:temp + "\SDelete.cmd" 
Get-PSDrive -PSProvider 'FileSystem' | Select-Object Name | foreach { $_.Name } | ForEach-Object {"SDelete -z "+ $_} | Out-File $TempFolderSavePath 

的问题是,该脚本也包括映射网络驱动器

我如何只能使用本地驱动器?

以下是脚本的一个版本,不生成新文件并将其输出到控制台。

Get-PSDrive -PSProvider 'FileSystem' | Select-Object Name | foreach { $_.Name } | ForEach-Object {"SDelete -z "+ $_} | Write-Host 

回答

4

据我所知,Get-PSDrive不知道网络和本地驱动器的区别。您可以使用Get-WMIObject Win32_LogicalDisk,其中supports filtering drives类型。

过滤例如:

Get-WmiObject Win32_LogicalDisk | select-object DeviceID, DriveType, @{Name="Type";Expression={[IO.DriveType]$_.DriveType}} | ? {$_.Type -eq 'Fixed'} 

Get-WmiObject Win32_LogicalDisk | ? {$_.DriveType -eq 3} 
+0

感谢队友,它的工作;) – lucbas

+0

下面是更新后的代码: GET-WmiObject可以的Win32_LogicalDisk |选择对象DeviceID,DriveType,@ {Name =“Type”; Expression = {[IO.DriveType] $ _。DriveType}} | ? {$ _。Type -eq'Fixed'} |选择对象DeviceID | foreach {$ _。DeviceID} | ForEach-Object {“SDelete -z”+ $ _} |写主机 – lucbas