Mam wiele woluminów (jak prawie każdy dzisiaj): w systemie Windows są one określone jako C :, D: i tak dalej. Jak mogę wyświetlić te wszystkie listy na komputerze Unix z "ls/mnt /" z Powershell?Lista wszystkich urządzeń, partycji i woluminów w Powershell
Odpowiedz
Aby uzyskać wszystkie dyski systemu plików, można użyć następującego polecenia:
gdr -PSProvider 'FileSystem'
gdr
jest aliasem dla Get-PSDrive
, która obejmuje wszystkie „wirtualnych napędów” dla rejestru itp
Cholera, jesteś szybszy ode mnie :-) – streetparade
Pamiętaj, że można to skrócić do 'Get-PSDrive -PSProvider ' FileSystem''. Uważam, że '| Where-Object' jest bardzo powolny w wielu przypadkach. –
@ BakonBits Zaktualizowałem swoją odpowiedź, aby odzwierciedlić Twoją lepszą opcję. Dla potomności początkowo miałem 'gdr | where {$ _. Provider.Name -eq "FileSystem"} ' – bdukes
Po pierwsze, na Uniksie używasz mount
, a nie ls /mnt
: wiele rzeczy nie jest zamontowanych w /mnt
.
W każdym razie istnieje polecenie DOS mountvol
, które nadal działa w trybie Powershell, a ponadto jest to specyfikacja Powershell Get-PSDrive
. Funkcja
PS:>get-psdrive
To fajna konfiguracja podpowiedzi. Czy mógłbyś podzielić się z tym szczegółami? – wishi
W Windows PowerShell:
Get-PSDrive
[System.IO.DriveInfo]::getdrives()
wmic diskdrive
wmic volume
Również dskwipe użyteczność: http://smithii.com/dskwipe
dskwipe.exe -l
Aby dodać tag, można również dołączyć flagę z innej odpowiedzi '-PSProvider: 'FileSystem'', która wyświetla tylko systemy plików. – Pred
To jest pr Etty stary, ale uważam, że warto zauważyć następujące:
PS N:\> (measure-command {Get-WmiObject -Class Win32_LogicalDisk|select -property deviceid|%{$_.deviceid}|out-host}).totalmilliseconds
...
928.7403
PS N:\> (measure-command {gdr -psprovider 'filesystem'|%{$_.name}|out-host}).totalmilliseconds
...
169.474
Bez właściwości filtrowania, w moim systemie testowym 4319.4196ms do 1777.7237ms. Jeśli nie potrzebuję zwrócenia obiektu PS-Drive, pozostanę przy WMI.
EDIT: Myślę, że mamy zwycięzcę: PS N:> (środek-komendę {. [System.IO.DriveInfo] :: getdrives() |% {$ _ name} |} out-gospodarz) .Aby talmilliseconds 110,9819
Get-Volume
dostaniesz: LiteraDysku, FileSystemLabel, FileSystem, DriveType, HealthStatus, SizeRemaining i rozmiar
Get-Volume wydaje się być dostępny tylko na Windows-Server 2012 i Windows-Server 2016. – Bram
Get-Tom pracował dla mnie z systemem Power Shell 5.1. Być może stworzyli ten standard w ostatnich latach/najnowsze aktualizacje. Ta odpowiedź powinna zwrócić większą uwagę. –
Choć nie jest to 'PowerShell' specyficzny .. możesz łatwo wymienić dyski i partycje używając diskpart, lista woluminów
PS C:\Dev> diskpart
Microsoft DiskPart version 6.1.7601
Copyright (C) 1999-2008 Microsoft Corporation.
On computer: Box
DISKPART> list volume
Volume ### Ltr Label Fs Type Size Status Info
---------- --- ----------- ----- ---------- ------- --------- --------
Volume 0 D DVD-ROM 0 B No Media
Volume 1 C = System NTFS Partition 100 MB Healthy System
Volume 2 G C = Box NTFS Partition 244 GB Healthy Boot
Volume 3 H D = Data NTFS Partition 687 GB Healthy
Volume 4 E System Rese NTFS Partition 100 MB Healthy
czy możliwe jest uzyskanie Volume ## za pomocą powershell? (Dla Windows 7) – Chand
Mamy wiele woluminów na dysk (niektóre są zamontowane na podkatalogach na dysku). Ten kod pokazuje listę punktów podłączenia i etykiet woluminów. Oczywiście można także wyodrębnić wolnego miejsca i tak dalej:
gwmi win32_volume|where-object {$_.filesystem -match "ntfs"}|sort {$_.name} |foreach-object {
echo "$(echo $_.name) [$(echo $_.label)]"
}
get-psdrive powróci ten nazwie głównej Dostawcy CurrentLocation ---- -------- ---- ---- ----------- A System plików A: Alias Alias C System plików C: \ scripts – streetparade