Disk 逻辑磁盘 9 _' S" Q% p6 R4 B ?7 z
Get-Disk
% S1 e- V+ K" @# m此命令用于获取可由操作系统管理的磁盘。当然如果是动态磁盘。或者已经位于池中的磁盘 - S+ c2 I/ @8 U! {
无法通过此命令获取,在不添加任何参数下,仅显示磁盘序号,名称,当前磁盘联机状态,大小,以及分区形式。 8 ?8 T( [: J m$ n# A4 P& J
如下图所示 / s4 x! c6 Y1 W4 _# Y
5 F) \. i9 n. L6 q- k$ P9 \% y我们使用get-disk |Select-Object * 对其进行完整输出,如下图 6 F9 ]: C: i0 E9 X
: S( E+ w' w% e+ r7 _ |) P8 D
下面对其中属性进行解释 - M1 ~7 c" ?! g" l1 ^/ R8 ?
PartitionStyle 磁盘分区类型对于已经初始化的磁盘这里将会显示 MBR,GPT,
- r) ]7 k: `8 a( [( I/ K3 Z没有经过初始化的磁盘或者磁盘损坏磁将会显示RAW
; X( ^* G, X0 b% [; ]- TOfflineReason 磁盘脱机原因 ! K" a* D. {% D; @
BootFromDisk 是否为启动磁盘 其中只有两个显示分别为False,True ' b2 c( \. v, f& b. a0 l( p
IsClustered 是否以群集化 为布尔类型 其中只有两个显示分别为False,True & W( a3 e* u' q& |6 }7 D) ^
IsOffline 是否脱机 为布尔类型 其中只有两个显示分别为False,True
# }2 U* S0 I- A: P9 FIsReadOnly 是否为只读 为布尔类型 其中只有两个显示分别为False,True
2 l7 V7 u# l/ t6 w' kIsSystem 是否为系统磁盘 为布尔类型 其中只有两个显示分别为False,True
0 d) P- h( T2 C$ |Number 磁盘序号,一般和物理磁盘的DeviceId 一致
3 [$ g0 o3 \! ^2 |) k0 {' n1 ENumberOfPartitions 当前磁盘总计分区数,也就是说这个磁盘上当前有几个分区的意思 7 j; J: V# B/ L7 P, w. P8 D [
ObjectId/ Path 分别为对象ID 与设备路径,这些均可以在设备管理器看到
/ ?& W. g3 B% U, Q* H" i. z( x' P6 mUniqueId 在get-physicaldisk 中介绍过这里不再介绍
8 y" [0 ~* ]5 v/ Q r5 Z下面即将演示通过get-disk 命令找出磁盘分区格式为GPT的磁盘
0 l: E: s, X. _3 G# l$ A# G: y, L: s使用get-disk |where {$_.PartitionStyle -match "GPT"} 来获取GPT分区格式的磁盘 & y. }( w! L# v M: i! B
如下图 7 m6 d! Y# ?# D8 V
) b8 ^- y7 [1 x% O
0 ]6 O: t4 e+ s; D5 n+ v
提问 : % ? B( l' A3 {3 Y
1.如何通过UniqueId 参数查找特定的磁盘?
5 U8 {% W* g. a% [! V2.如何查找处于脱机的磁盘,如何查找其脱机原因? - d+ m6 T/ a, e/ Z
3.如何查找一个或者多个指定序号的磁盘?
0 p! R, ^/ f0 I2 j4.如何找出未初始化的磁盘?
. o, Z# i6 M3 W' {思考问题 UniqueId 很长难以记住,有没有更好的方法呢?
. R$ w* ~+ G; T" l7 T* d7 p3 w
: M, W" h: a) V
1 Y: r- b' M7 {( `7 r' p2 f0 u5 u, g$ d# k! W
, O# t+ j, Z0 t! _# o3 v1 b
Set-Disk
7 R9 u! O5 p0 S3 j, e L5 O$ ~7 _此命令用于更改由get-disk 可获取的对象属性,其可更改的属性包括磁盘分区类型,
! Y( j- h) g$ c是否脱机,是否只读。
/ L; E; o5 E1 p下面将演示使用set-disk 命令对磁盘进行更改,使其脱机(offline) 7 K! T, n H$ \& T2 d
在本例中将会出现四个磁盘用于演示,其中有HDD一个SSD三个。 2 z! b/ ^2 C5 u4 C3 e
可用于更改的磁盘有两个SSD。
9 I S* N( m* ]5 U/ C9 b6 d第一步 使用get-disk 获取当前可供管理的磁盘如下图
3 |: I- B3 n( |# K y( h
_3 E" Z- m. H) ~9 c从图中获取到可更改的磁盘序号分别为 0,1(这两个是新加上的没有任何数据) : z0 @# c; w) c8 C
第二步 利用管道将序号为0,1的磁盘传递给set-disk 让其脱机(offline)
4 V8 i. U3 Y' ~; u. e. R7 T# d* e9 {get-disk 0,1|Set-Disk -IsOffline $true,此后重新使用get-disk 命令再次获取磁盘状态
% s! A& [) T! h ]& U! s) f3 }这里我们为get-disk 命令添加参数 –number 9 t) ]1 `5 a* a; |
如下图
, @* i+ A7 D$ [4 ]0 n; _. ?1 H: ]& K6 t6 A% A# c
此时磁盘已经脱机在磁盘管理中可以看到
- }! f+ b) s: Q/ r& D
% l& C* V8 u' ~5 J* o; q, ]* n0 K还记得get-disk命令输出中有一项属性为offlinereason, 9 O; {" f8 H; a$ w& j
现在我们来看一下这两个磁盘的脱机原因
6 M0 r8 A" H" `使用get-disk -Number 0,1 |Select-Object OfflineReason 如下图
6 b7 D" t1 M8 o) p4 d3 \+ D! F7 h( L. l$ W$ e; m1 F) E5 X6 r# B
图中明确的告诉我们脱机原因是因为策略 " X' ]$ |, y! S( X: Q, W
磁盘管理中给出的原因如图 7 X/ [0 L- t, b$ Z( ?
) k9 r; N' K4 T( J* A% M; B+ c
本节的演示已经回答了在get-disk一节的提问,对于没有演示的提问在本节中也已经给出方法。
" s( V- S* w. j# G8 o" H; {7 J提问 如何使用UniqueId参数 来设定磁盘分区形式,是否只读? ! Y( K+ C) C: X' H. U! Z8 Z. a+ Q
- Z! C# G" | u$ T
2 F1 |* Z2 u; I/ j: M9 V) q
! e" G- M: m/ S7 j& y
9 O6 a5 W! n* p- O0 r8 A
/ x/ O1 U1 v0 |9 T3 p0 _0 I
* K& V$ v1 O3 m2 M5 c+ J+ i, E; |& b- Z0 O* h8 c% r
, Y# |) j! b3 _; [- f- s3 cInitialize-Disk
0 s' D7 E; T4 X6 `5 h+ u) p( ?此命令用于初始化磁盘。 7 G0 b+ S# Q7 t' Z) @9 J! R
此命令在执行时将初始化磁盘,同时指定其分区形式(MBR/GPT其中GPT 为默认形式) % ^' k) A/ r& a! T4 q0 N+ q
磁盘在格式化前必须经过初始化,以用来数据存储。
" Y7 M* H: L! ~! t( g. V此命令可以初始化物理磁盘也可以初始化虚拟磁盘。 1 [6 O7 B. F& E
下面将演示如何将一个或者多个磁盘进行初始化。 $ `- P- w/ |1 @( T6 O+ @
在本次演示中将初始化两个SSD 同时其分区形式为GPT / D9 H R1 b1 I% V
同时我们将定义一个变量用于接收命令产生的对象,用于简化输入 0 Q' b, Z0 J; X
第一步 通过get-disk 命令查找未初始化的磁盘
5 Y. `( \; p! x$ D1 ?如下图 - y0 c1 M6 z0 @* k. h9 ]
6 m& }9 B. N: T3 W/ w9 @# q0 ^$ |% o
第二步 定义变量 $disk_init 内容为get-disk产生的对象 ' S' {- _* E5 _9 w# P% a0 e& k
: l3 T) o. ^- h# U( `1 p
3 R9 s) H& I3 R
0 y8 y' y0 e. D. c
第三步 使用管道符号将变量内容传递给 initialize-disk 命令
. N: M: _* V4 Y+ X( [, W% r8 s同时指定参数 PartitionStyle 其参数值为GPT
: d1 ]6 l* [- g9 `) C
) j, [6 a8 }3 v( d% S$ c! M此时位于变量 $disk_init 中的磁盘对象将逐一传递给initialize-disk 命令进行初始化 * |6 y" |, f/ ~0 l; G7 g
Clear-disk 8 f5 R( B" U2 @
此命令用于清除选中磁盘的分区信息,并且将磁盘重置到未初始化的状态
/ P$ Y# X+ i5 E% c5 O& M. @注意:已经池化的磁盘无法通过此命令执行清除操作 此操作会使选中磁盘上的数据全部丢失!!请谨慎使用
( N& |5 w/ I* y; ]. e/ w下面将演示使用此命令进行清除操作
% Z; l" ?# D1 |环境 环境中有一个SSD 同时有一个分区分区形式为GPT且使用全部磁盘容量,分配盘符为E,磁盘编号为0, 2 a( K/ u! A! \4 P
如下图所示 4 z/ M, g* J. X8 Y
2 h# W1 e4 c. X: D/ n
) p* f: F5 m4 z. ?( T6 m" G
/ X" D1 N) [& y( C$ l8 u使用Clear-Disk -Number 0 对其进行清除 运行后如下图
2 r9 A5 J1 p( Q- m: b& ]4 F, ` . w ?! H( V$ I4 v# N
% ~. C4 u. i1 I
图中出现红色错误,提示我们在拥有分区的情况下无法清除,请使用removedata 参数
6 K8 T$ G2 _" D; e下面我们添加removedata 参数 运行后如下 & e8 ?6 D& y+ k+ c5 n; r4 _
* a6 A; r( D4 m. J( v+ A; {
/ N# t5 w9 z" m
& V. i: `5 c# i / a' T& d& U: @1 K8 B
提示: 在仅仅完成初始化的磁盘上进行清除操作时候无需添加removedata参数 ! z0 Y0 u; N3 b! L: C5 G
提问:如何同时对多个磁盘进行清除
* L5 M) ?& j& d% u) W# n9 g% d
4 N6 w& |8 D: ]# ?1 W5 e; C: G7 |
3 z' _$ R3 J+ t$ _" |' k' t0 a& r& n9 lUpdate-disk $ `* o& F+ @+ [1 j, A% _' g" I* ?
此命令用于刷新磁盘缓存信息状态。
$ m1 \" X8 E: S- Q H+ s$ n默认情况下update-disk 将刷新全部磁盘状态
# y4 o' g/ D+ a2 ~5 k" K注意某些多磁盘系统上此命令可能运行很长时间
' F3 m( p2 k) i6 {在刷新状态时候我们可以使用公共参数 –asjob使其任务进入后台图下图 / d# ~/ \, K7 c: {; f- e
+ w/ w1 I4 F3 e6 K, l此后我们使用get-job 来获取任务状态如下图
; G+ n/ o. o' g1 x
, f' t" k9 q' {( Z. m' \对于获取已经完成的任务信息我们使用Receive-Job 进行获取
: R6 ^6 _7 ~+ Z4 D5 j) c提问: ' O( b( t6 d' F7 _3 B( w: {
请尝试使用Receive-Job 获取本里中结果
8 r3 T. c5 O) n f" T, v8 O8 M- ^9 z9 r1 H4 @# a! ~* D
* k. v9 ~& o8 W5 P0 ?
4 _$ z4 p6 M2 l9 Z3 v |