2022-01-18

Powershell ile diskleri yönetmek

Yeni bir disk geldi. Bilgisayara bağlantısını yaptıktan sonra ilk açılışta elbette gözükmeyecek. Öncelikle diski initialize (Diski Başlat) edip disk bölümleri oluşturmalıyız. Bunu grafik arayüz yerine powershell'den yapalım.

Önce bilgisayarda takılı diskleri listeyelelim

Get-Disk
Number Friendly Name               HealthStatus   OperationalStatus   Total Size Partition Style
------ -------------               ------------   -----------------   ---------- ----------
0      Samsung SSD 860 PRO 512GB   Healthy        Online               476.94 GB GPT
1      TOSHIBA HDWL120             Healthy        Online                 1.82 TB RAW

Son satırda Partition Style olarak RAW gözüken disk, yeni takılan diskimiz. Bunun üzerinde yeni bölümler oluşturmadan önce bu diski initialize etmemiz gerek.

Get-Disk -Number 1 | Initialize-Disk -PartitionStyle GPT

Initialize-Disk cmdlet'inin varsayılan partition style'ı GPT, yani yazmaya gerek yok aslında. MBR yapmak için açıkça belirtmek gerek.

Bu işlemden sonra diskimiz bir GPT disk olarak bölümlendirmeye hazır. Yeni bir disk bölümü oluşturalım:

Get-Disk -Number 1 | New-Partition -Size 500GB -Driveletter P -Offset 500GB

Bu komut ile önce disk listesinde görülen 1 numaralı diski seçip new-partition cmdlet'ine gönderdim. Bu cmdlet ile de üzerinde 500 GB'lık bir disk bölümü oluşturup P: sürücü harfi ile erişilmesini istedim. Offset parametresinin varlığını göstermek istediğim için kullandım. Disk bölümünü boş diskin başında değil de ortasında yaratmak istersek bunu kullanabiliriz. Boyut olarak bütün diski kullanmasını istersek -UserMaximumSize parametresini kullanabiliriz.

Son aşamada bu sürücüyü biçimlendirmemiz gerek.

Format-Volume -Driveletter P -Filesystem NTFS -AllocationUnitsize 8192

Bu komut ile de P: sürücümüzü NTFS dosya sistemi kullanarak biçimlendirip her disk biriminin (segment) 8192 Byte boyutunda olmasını sağladık.

Daha sonra bu disk bölümünün boyutunu değiştirmek istediğimizi varsayalım. Yanlış disk/bölüm üzerinde işlem yapmamak için önce Get-* cmdlet'leriyle seçimizi yapıp sonrasında bu seçimi boru "|" karakteriyle işlemi yapacak cmdlet'e gönderelim:

Get-Disk -Number 1 | Get-Partition -PartitionNumber 2 | Resize-Partition -size 512GB

Daha kısa bir şekilde

Get-Partition -Driveletter P | Resize-Partition -Size 512GB

da diyebilirdik.

Var olan bir disk bölümünden kurtulmak için

Get-Partition -Driveletter P | Remove-Partition

Bir diskteki bütün disk bölüm yapısını silmek için

Clear-Disk -Number 1

Disklerde bir de "kullanıma hazırlık durumu" (operational status) denen bir durum var. Bir diski herhangi bir anda çevrim içi (online) veya çevrim dışı (offline) yapabiliriz. Bunu diskte veri varken de, veri yokken de yapabiliriz. Bu, diskte olan veriyi veya dosya sistemini etkileyen bir işlem değildir. Sadece diski, işletim sistemi tarafından kullanılan diskler arasından çıkartır. Bir nevi umount işlemi gibi.

Get-Disk -Number 1 | Set-Disk -IsOffline $True

Burada parametrenin başında "Is" olması, sanki durum belirleme işlemi dışında bir sorgu yapıyormuş izlenimi verse de, aslında değil. Oradaki "Is" önekini "set" ile değiştirerek okumak gerek. Elbette tam tersi bir durumda çevrim dışı olan bir diski çevrim içi duruma getirmek için de bu parametrenin değerini $false yapmak gerek:

Get-Disk -Number 1 | Set-Disk -IsOffline $False

Benzer şekilde diski sadece okunabilir duruma getirmek için de bir parametre var; IsReadOnly. Aynı mantıkla çalışıyor. "Is" önekini "Set" ile değiştirerek okumak gerek. Bu işlem dosya sisteminin yeteneklerinden bağımsız olarak çalışıyor. Aslında dosya sistemi seviyesinde sadece okuma yeteneği olmayan durumlarda (örneğin Fat32) da kullanılabilir.

Get-Disk -Number 1 | Set-Disk -IsReadOnly $True

Hiç yorum yok: