Disk 逻辑磁盘 2 b! y7 z1 U/ E% l( z$ p
Get-Disk
X& G X/ o5 U+ v1 I此命令用于获取可由操作系统管理的磁盘。当然如果是动态磁盘。或者已经位于池中的磁盘
2 e$ P* w- T: M4 W无法通过此命令获取,在不添加任何参数下,仅显示磁盘序号,名称,当前磁盘联机状态,大小,以及分区形式。
1 Y! Z. q/ c7 i* m/ r# D; @如下图所示
2 t8 o W$ B4 e. X
3 `, e0 m3 S+ `! L+ D: }- ~, f我们使用get-disk |Select-Object * 对其进行完整输出,如下图
$ U1 n* t+ [7 K' }2 ]3 k0 R) j
下面对其中属性进行解释 ! {* }9 y, i S2 V* I* `/ J2 n( { `* h
PartitionStyle 磁盘分区类型对于已经初始化的磁盘这里将会显示 MBR,GPT, . C t+ x- U4 Q' f( N
没有经过初始化的磁盘或者磁盘损坏磁将会显示RAW - D" b) x1 F7 Y" R' k
OfflineReason 磁盘脱机原因 1 u; |: w5 \ m8 y
BootFromDisk 是否为启动磁盘 其中只有两个显示分别为False,True ; E* s" i# F: ~* a- B5 D$ k
IsClustered 是否以群集化 为布尔类型 其中只有两个显示分别为False,True
' T; S9 N8 u PIsOffline 是否脱机 为布尔类型 其中只有两个显示分别为False,True # r+ e0 l( Y; T) t& a3 E
IsReadOnly 是否为只读 为布尔类型 其中只有两个显示分别为False,True
5 p. B f# G! k" w6 hIsSystem 是否为系统磁盘 为布尔类型 其中只有两个显示分别为False,True , s: V/ q) }1 A& a9 ?
Number 磁盘序号,一般和物理磁盘的DeviceId 一致
5 m5 M$ F8 N# yNumberOfPartitions 当前磁盘总计分区数,也就是说这个磁盘上当前有几个分区的意思 " _, N. Q- p* ^$ T* C! l9 h. b
ObjectId/ Path 分别为对象ID 与设备路径,这些均可以在设备管理器看到
) B9 a; b3 ~, X* t; M4 B1 b$ b# DUniqueId 在get-physicaldisk 中介绍过这里不再介绍
7 E* U) c$ F' Q! Q3 S3 Y) V下面即将演示通过get-disk 命令找出磁盘分区格式为GPT的磁盘
5 U1 q, R4 q9 w" W1 o' c I% w$ H I' a( E使用get-disk |where {$_.PartitionStyle -match "GPT"} 来获取GPT分区格式的磁盘
7 m9 d! B4 e, x* @如下图 8 q& l: h; u# m% f4 [
1 t6 p& L' \6 Q0 u4 x+ t 6 [! I: J$ N q
提问 :
: ]) g+ U+ f" |$ S/ O1.如何通过UniqueId 参数查找特定的磁盘? x5 s6 l; v( A7 T2 \
2.如何查找处于脱机的磁盘,如何查找其脱机原因? $ {# Z, U7 E6 D" E+ k+ h
3.如何查找一个或者多个指定序号的磁盘?
: A" M9 G3 H4 U3 J% Y) o- t) h( h1 S4.如何找出未初始化的磁盘?
) d0 N5 M Z' i7 b3 U思考问题 UniqueId 很长难以记住,有没有更好的方法呢?
5 A8 \$ Q4 l8 T. c8 k* a5 F4 T. l3 z8 D+ Y
8 y9 ^ Q# e5 h7 P S" U
; B/ w$ u0 ^# p" m+ w: _: n
6 K/ z# P% c2 n, J, w' C FSet-Disk ' h3 i1 H' |3 t" g' \. H
此命令用于更改由get-disk 可获取的对象属性,其可更改的属性包括磁盘分区类型,
) ?* S( i2 W! @. X2 W是否脱机,是否只读。 / B/ A9 l3 R* x l+ h# ]( ~1 X
下面将演示使用set-disk 命令对磁盘进行更改,使其脱机(offline) ' T% v' j% S- ]. q
在本例中将会出现四个磁盘用于演示,其中有HDD一个SSD三个。 ' y4 W9 s& l* W, x8 N) a: v& h( d3 E
可用于更改的磁盘有两个SSD。 , T/ {% h0 o# Z0 b; h K5 R r/ ^
第一步 使用get-disk 获取当前可供管理的磁盘如下图 1 Q# R' }/ z. h% F1 h
2 f5 n" M; s% P3 y% d3 G- A从图中获取到可更改的磁盘序号分别为 0,1(这两个是新加上的没有任何数据)
' `) Z9 g& n% ?# m5 d2 m第二步 利用管道将序号为0,1的磁盘传递给set-disk 让其脱机(offline) 4 @, |/ _! x2 c3 v. W4 ^3 ^( E
get-disk 0,1|Set-Disk -IsOffline $true,此后重新使用get-disk 命令再次获取磁盘状态
4 b3 {- _& s) h" B) o这里我们为get-disk 命令添加参数 –number ; A# m. Q3 _$ H, h+ a, S* {6 }9 X
如下图 7 n: Y% ?0 _' A
7 l" _& X5 Q! B) B$ ~+ O# h此时磁盘已经脱机在磁盘管理中可以看到
$ X) v$ J6 q( m$ I) P1 J+ _6 j' U e; I8 B" Y, e. B" w- ]
还记得get-disk命令输出中有一项属性为offlinereason,
8 F. h1 d: J' t, {9 N现在我们来看一下这两个磁盘的脱机原因 / L1 c4 E6 K* h
使用get-disk -Number 0,1 |Select-Object OfflineReason 如下图
* j& C; ?4 K' c6 \
# n- c' M- I4 d6 @图中明确的告诉我们脱机原因是因为策略
7 I$ V# s7 j) y# o# J! M6 f磁盘管理中给出的原因如图
9 k. t( B; m5 E) k4 |" e3 p6 x; O- m5 ^$ `" A
本节的演示已经回答了在get-disk一节的提问,对于没有演示的提问在本节中也已经给出方法。
0 n# d: A! b% |# N$ b. Q' H, d提问 如何使用UniqueId参数 来设定磁盘分区形式,是否只读?
$ a8 R5 {2 u ^% G9 Q
0 x0 c1 ] {3 |# x- U) c- R4 N- e" H: r( \0 A$ p
2 y0 x) @; F( `$ _; j* ^& M
0 J7 o( z( _# w+ F* V3 U4 l
; M! Z m% `6 s6 i7 X d* J- g# j; v+ h4 x8 S
. g! G' n) }) O! ^+ j5 u* x* F/ X7 I. K8 w
Initialize-Disk 8 I* k) d( L: q; }) \
此命令用于初始化磁盘。
. u* y$ b$ L8 c! e此命令在执行时将初始化磁盘,同时指定其分区形式(MBR/GPT其中GPT 为默认形式)
, y# L. Z6 v$ m5 s' I; R- W1 [磁盘在格式化前必须经过初始化,以用来数据存储。
* V f; [' R. }* J8 L此命令可以初始化物理磁盘也可以初始化虚拟磁盘。
% ^& z7 u$ J7 K% d) i: o; w/ S! f4 l下面将演示如何将一个或者多个磁盘进行初始化。 + U; x, g6 ~ X8 k
在本次演示中将初始化两个SSD 同时其分区形式为GPT ( V$ ~( m5 G9 D6 N
同时我们将定义一个变量用于接收命令产生的对象,用于简化输入
& C6 Z/ G4 c# w9 l3 I. h第一步 通过get-disk 命令查找未初始化的磁盘
: D! b2 Q. Z L9 Y7 e7 g如下图
+ B( ]& w7 Z4 t4 l$ Z B
9 J, q% F# P4 o v4 Y7 g5 C第二步 定义变量 $disk_init 内容为get-disk产生的对象
& v) t* h0 q& S) o/ h0 d* x% c - P4 v* D, u8 O7 I' K) V2 w
0 i+ `$ P# ~* g6 i- u
5 t* e' B D0 I7 A( n8 m2 w
第三步 使用管道符号将变量内容传递给 initialize-disk 命令
& h) f" u" I$ F7 }: z同时指定参数 PartitionStyle 其参数值为GPT / t" E: o- K h$ I! X2 s% ?1 I8 q: }
' f$ }5 E7 W; k' K* c. D此时位于变量 $disk_init 中的磁盘对象将逐一传递给initialize-disk 命令进行初始化
& E1 m8 y1 O& I8 EClear-disk 5 _( \: X6 U2 I, Q9 u
此命令用于清除选中磁盘的分区信息,并且将磁盘重置到未初始化的状态
" o' v/ V V5 F1 [" t1 N: V) O( w注意:已经池化的磁盘无法通过此命令执行清除操作 此操作会使选中磁盘上的数据全部丢失!!请谨慎使用 - l2 D! W u1 l
下面将演示使用此命令进行清除操作
1 E3 T) [6 F( i环境 环境中有一个SSD 同时有一个分区分区形式为GPT且使用全部磁盘容量,分配盘符为E,磁盘编号为0, : O8 f. c2 h0 ?0 E% z
如下图所示 5 ^& g4 X ?7 N6 r# i
! g& H7 {& L; e$ e/ I" {7 a X' c( `1 ?/ V6 {+ Z9 _; m1 q3 E
- P3 H; m2 O8 h$ o0 p# K
使用Clear-Disk -Number 0 对其进行清除 运行后如下图 4 I) ]! S) W; i7 A0 p+ K: s# L* @

" n' }: w: }( h+ O) x) z . }3 v+ k. ?; s3 Z+ m
图中出现红色错误,提示我们在拥有分区的情况下无法清除,请使用removedata 参数
1 I7 f4 x% s/ w7 r下面我们添加removedata 参数 运行后如下 ' Q' x* O C8 F3 j
/ N6 C3 J& E& `. f 4 H. o% e& ]/ N% ^
2 g( [0 x3 }% Y" b% S# Y( j! V/ F
O: a4 E) D W提示: 在仅仅完成初始化的磁盘上进行清除操作时候无需添加removedata参数
% V" l4 V# N% ~# D 提问:如何同时对多个磁盘进行清除 X7 H( U2 S5 n# g# e
6 f2 E2 K- `8 p3 k
+ z, A" g# a c- C4 N% h K- |Update-disk 2 Y7 _3 u ^5 R/ Y @
此命令用于刷新磁盘缓存信息状态。 ( p8 J) t7 v7 J6 Z2 ~
默认情况下update-disk 将刷新全部磁盘状态 / {% `2 |9 a# }1 Z* L, o' H8 i6 R
注意某些多磁盘系统上此命令可能运行很长时间
" [7 ]/ {& v6 _/ j9 \) Y在刷新状态时候我们可以使用公共参数 –asjob使其任务进入后台图下图
! N% U+ R2 [' C/ }. }: f
8 @/ N# v$ m8 Y, z# u2 K此后我们使用get-job 来获取任务状态如下图
( N+ `* Q' X# F1 a; Q1 ~" L- X8 F! K- F
对于获取已经完成的任务信息我们使用Receive-Job 进行获取 o' Y# {4 J" y/ D( T
提问:
2 K) `0 y: i/ S8 }2 \请尝试使用Receive-Job 获取本里中结果
+ k# ?; Q) H0 t. T: Z' b3 X. K7 ]* W2 Q# B- z
& B; P0 P Q5 G' n9 }& C
4 _1 a! `' k; p# `& n8 o1 Y
|