2013-08-30 44 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