Saya memiliki satu baris ini:
get-WmiObject win32_logicaldisk -Computername remotecomputer
dan hasilnya adalah ini:
DeviceID : A:
DriveType : 2
ProviderName :
FreeSpace :
Size :
VolumeName :
DeviceID : C:
DriveType : 3
ProviderName :
FreeSpace : 20116508672
Size : 42842714112
VolumeName :
DeviceID : D:
DriveType : 5
ProviderName :
FreeSpace :
Size :
VolumeName :
Bagaimana cara mendapatkan Freespace
dan Size
dari DeviceID
C:
? Saya hanya perlu mengekstrak dua nilai ini tanpa informasi lain. Saya telah mencobanya dengan Select
cmdlet, tetapi tidak berhasil.
Edit: Saya hanya perlu mengekstrak nilai numerik dan menyimpannya dalam variabel.
powershell
scripting
powershell-2.0
culter
sumber
sumber
[Math]::Round($Disk.Freespace / 1GB)
1mb
mengembalikan nilai1048576
dan bukan1000000
????1MiB
(dengan huruf yang benar) tetapi biasanya ditampilkan dalam huruf kecil, tanpa "i". Lihat Mebibyte .Solusi yang jauh lebih sederhana:
dan untuk komputer jarak jauh (kebutuhan
Powershell Remoting
)sumber
psexec -u administrator \\[computer name or IP] powershell "get-psdrive C"
Hanya satu perintah sederhana manis dan bersih tetapi ini hanya berfungsi untuk disk lokal
Anda masih bisa menggunakan perintah ini di server jarak jauh dengan melakukan Enter-PSSession -Computername ServerName dan kemudian menjalankan Get-PSDrive itu akan menarik data seolah-olah Anda menjalankannya dari server.
sumber
Saya membuat fungsi lanjutan PowerShell (script cmdlet) beberapa waktu yang lalu yang memungkinkan Anda untuk menanyakan beberapa komputer.
Kode untuk fungsinya sedikit lebih dari 100 baris, jadi Anda dapat menemukannya di sini: Versi PowerShell dari perintah df
Lihat bagian Penggunaan untuk mengetahui contohnya. Contoh penggunaan berikut mengkueri sekumpulan komputer jarak jauh (input dari pipa PowerShell) dan menampilkan output dalam format tabel dengan nilai numerik dalam bentuk yang dapat dibaca manusia:
sumber
Ada dua masalah yang saya temui dengan saran lainnya
1) Pemetaan drive tidak didukung jika Anda menjalankan PowerShell di bawah penjadwal tugas
2) Anda mungkin mendapatkan kesalahan Akses ditolak, kesalahan mencoba menggunakan "get-WmiObject" di komputer jarak jauh (tentu saja tergantung pada pengaturan infrastruktur Anda)
Alternatif yang tidak mengalami masalah ini adalah menggunakan GetDiskFreeSpaceEx dengan jalur UNC:
sumber
Cara lain adalah mentransmisikan string ke objek WMI:
Anda juga dapat membagi hasil dengan 1GB atau 1MB jika Anda menginginkan unit yang berbeda:
Outputnya adalah:
Remotecomputer C: has 252.7 GB free of 298.0 GB Total
sumber
Garis komando:
Keluaran:
garis komando:
di luar:
garis komando:
di luar:
sumber
wmic logicaldisk get size
tidak memperhitungkan ruang yang dicadangkan tho ... di PowerShellget-volume
mengembalikan ukuran total praktis (yaitu dikurangi ruang yang dicadangkan), tetapi kemudian ketika saya mencobanyaget-volume | format-list size
dikatakan ukuran total ditambah ruang yang dicadangkan ... bagaimana cara saya mendapatkan ukuran total dikurangi ruang yang dicadangkan untuk setiap drive dengan PowerShell ???sumber
sumber
Saya tahu alat psExec yang dapat Anda unduh dari sini
Ada psinfo.exe dari paket alat. Penggunaan dasarnya adalah sebagai berikut di PowerShell / cmd.
Namun Anda bisa memiliki banyak opsi dengannya
Penggunaan: psinfo [[\ computer [, computer [, ..] | @file [-u pengguna [-p psswd]]] [-h] [-s] [-d] [-c [-t pembatas]] [filter]
\ computer Lakukan perintah pada komputer remote atau komputer yang ditentukan. Jika Anda menghilangkan nama komputer, perintah akan dijalankan di sistem lokal, dan jika Anda menentukan wildcard (\ *), perintah akan dijalankan di semua komputer di domain saat ini.
filter Psinfo hanya akan menampilkan data untuk bidang yang cocok dengan filter. misalnya "layanan psinfo" hanya mencantumkan bidang paket layanan.
sumber
Saya melakukan remote ke komputer menggunakan Enter-PSsession pcName lalu saya ketik Get-PSDrive
Itu akan mencantumkan semua drive dan ruang yang digunakan dan yang tersisa. Jika Anda perlu melihat semua info yang telah diformat, kirimkan ke FL seperti ini: Get-PSdrive | FL *
sumber
Saya membuat fungsi sederhana ini untuk membantu saya. Ini membuat panggilan saya jauh lebih mudah untuk dibaca bahwa memiliki pernyataan Get-WmiObject , Where-Object , dll.
sumber
Jika Anda ingin memeriksa beberapa huruf kandar dan / atau filter antara kandar lokal dan jaringan, Anda dapat menggunakan PowerShell untuk memanfaatkan kelas WMI Win32_LogicalDisk . Berikut contoh singkatnya:
Saya menggunakan teknik di atas untuk membuat skrip Powershell yang memeriksa semua drive dan mengirim peringatan email setiap kali mereka berada di bawah kuota yang ditentukan pengguna. Anda bisa mendapatkannya dari postingan ini di blog saya.
sumber
PowerShell Fun
sumber
Baru saja menemukan perintah Get-Volume , yang kembali
SizeRemaining
, jadi sesuatu seperti(Get-Volume -DriveLetter C).SizeRemaining / (1e+9)
dapat digunakan untuk melihat Gb tetap untuk disk C. Sepertinya bekerja lebih cepat dariGet-WmiObject Win32_LogicalDisk
.sumber