Disk 逻辑磁盘
; z* F( ~( f9 X1 G" IGet-Disk
. \% E0 Z, u% Z+ O- d此命令用于获取可由操作系统管理的磁盘。当然如果是动态磁盘。或者已经位于池中的磁盘 ) {, i7 l5 X i8 T- D
无法通过此命令获取,在不添加任何参数下,仅显示磁盘序号,名称,当前磁盘联机状态,大小,以及分区形式。
. v7 d9 c9 D0 @如下图所示
6 c% q. A! V& A1 T6 I3 ?/ ^7 u& U6 C- Y. d( L7 b
我们使用get-disk |Select-Object * 对其进行完整输出,如下图 ' Z! H. r4 p2 |; M
: j/ m& C/ z6 h0 K2 m下面对其中属性进行解释
( J/ V( t( q! ?7 APartitionStyle 磁盘分区类型对于已经初始化的磁盘这里将会显示 MBR,GPT,
; ^" B- _; S" B6 N" @6 P没有经过初始化的磁盘或者磁盘损坏磁将会显示RAW O0 ?1 U5 q1 U. Q K1 x
OfflineReason 磁盘脱机原因
+ Z/ s& B; b) g, U5 F( D* lBootFromDisk 是否为启动磁盘 其中只有两个显示分别为False,True
; t6 d/ v; E8 a# b, ^) QIsClustered 是否以群集化 为布尔类型 其中只有两个显示分别为False,True
, u! l% ^. A! W5 u6 w" q. E e; _IsOffline 是否脱机 为布尔类型 其中只有两个显示分别为False,True
: m9 u7 B5 f6 H% b" i; f$ o0 ]# wIsReadOnly 是否为只读 为布尔类型 其中只有两个显示分别为False,True
7 K9 ~* X4 | V; B7 c' VIsSystem 是否为系统磁盘 为布尔类型 其中只有两个显示分别为False,True
* c" M/ t/ f# b, L6 eNumber 磁盘序号,一般和物理磁盘的DeviceId 一致
! S1 n: I U% ?- r+ y/ W9 b( {NumberOfPartitions 当前磁盘总计分区数,也就是说这个磁盘上当前有几个分区的意思
1 `7 b( i- ]( ]4 E8 {ObjectId/ Path 分别为对象ID 与设备路径,这些均可以在设备管理器看到 + a+ U5 R/ U) U. h* L4 a+ G6 h
UniqueId 在get-physicaldisk 中介绍过这里不再介绍
) |6 }* |# W+ Z0 K下面即将演示通过get-disk 命令找出磁盘分区格式为GPT的磁盘 4 g4 N# b( b# U2 Q7 G
使用get-disk |where {$_.PartitionStyle -match "GPT"} 来获取GPT分区格式的磁盘 ' b; I8 H4 Y( c4 A$ O1 p
如下图
! M1 C; X/ r# j; ]
1 }1 W: d0 a9 H3 \7 x2 ~
% i5 b, g) |# a. M+ c# l提问 : 3 G- X/ c# }; w R; P, p- H
1.如何通过UniqueId 参数查找特定的磁盘? 9 K6 F' d1 H/ H
2.如何查找处于脱机的磁盘,如何查找其脱机原因?
7 F: J) W* ]0 ^: `3.如何查找一个或者多个指定序号的磁盘? ) g( \, t! L9 {: x* c
4.如何找出未初始化的磁盘? 2 q! N! D8 F8 X1 {" R4 D
思考问题 UniqueId 很长难以记住,有没有更好的方法呢? ! [, `3 G* x) l% ^' N
* V: s. H- }7 B, Q- D, {9 O+ l3 d) U" l
! |! ~2 @- {- T3 ~: |7 w6 K8 m K2 K0 n& s8 b" m; W$ B2 A" ]
5 t5 n9 S. F! ~
Set-Disk & |4 `* [) K. O
此命令用于更改由get-disk 可获取的对象属性,其可更改的属性包括磁盘分区类型,
. R- B: j7 G! @) n/ n是否脱机,是否只读。
1 [/ N; l/ d( ]7 D. X下面将演示使用set-disk 命令对磁盘进行更改,使其脱机(offline)
; M, s5 |$ I1 o& k: I& p( q在本例中将会出现四个磁盘用于演示,其中有HDD一个SSD三个。
+ c9 z- h) }9 ?% z. x* E1 s可用于更改的磁盘有两个SSD。 % F; D" W$ a$ U: R, {
第一步 使用get-disk 获取当前可供管理的磁盘如下图
& V( i3 Z w# R! t9 q/ J: W, E) k* q8 N5 ], J4 i
从图中获取到可更改的磁盘序号分别为 0,1(这两个是新加上的没有任何数据) ' f* D( s C6 F; @" t
第二步 利用管道将序号为0,1的磁盘传递给set-disk 让其脱机(offline)
) X' R+ ^: @: x8 E6 V: Y2 Cget-disk 0,1|Set-Disk -IsOffline $true,此后重新使用get-disk 命令再次获取磁盘状态 + x, t/ g! d+ D: {, V N7 `
这里我们为get-disk 命令添加参数 –number
6 v% w: ]/ I( \4 G% ]( c( R如下图 9 B* ~ L3 g0 h( _" z4 L7 {
3 q& ^. z+ H: R( _* {) ~
此时磁盘已经脱机在磁盘管理中可以看到 3 w. P$ A. D; f: H4 N1 y: i
C7 J( N' Y S9 s+ @还记得get-disk命令输出中有一项属性为offlinereason, - I; Y4 s- W& m& K
现在我们来看一下这两个磁盘的脱机原因 ) O& Y9 j ] U+ a/ y% s
使用get-disk -Number 0,1 |Select-Object OfflineReason 如下图
% y. l' H) U8 a( } o
s& C6 H( c# ~: M/ i( n! j图中明确的告诉我们脱机原因是因为策略
: V5 l4 D1 Q8 f* m磁盘管理中给出的原因如图 ! q7 e( m8 ~$ E4 ?( s- F
( {0 z( e B& ~, F$ P2 y
本节的演示已经回答了在get-disk一节的提问,对于没有演示的提问在本节中也已经给出方法。
, Y0 k6 @( D; Y+ M9 b4 |提问 如何使用UniqueId参数 来设定磁盘分区形式,是否只读? & Q1 a6 ?) `# ]9 c
4 ~ L' f! g. ^4 t- J8 b
: }: K6 u8 Z$ p1 ~' e$ u) z3 S
3 W. N6 p$ D' Y0 a8 D7 O; w6 P! [% w ~: ^( P$ r
- c6 v, H6 ]/ g! p
4 Y6 p' L, X. I7 ^9 c! E# H1 c- p/ q+ \. r% w. }, ]
# k9 [1 A, l$ I a: z+ s2 h1 w! {8 K
Initialize-Disk
I+ U% v( }/ Z1 u此命令用于初始化磁盘。
; U3 [: g/ C! e3 j) _7 V# V5 v, F# i- M- L此命令在执行时将初始化磁盘,同时指定其分区形式(MBR/GPT其中GPT 为默认形式)
- i4 S* R# m8 Y' ^0 t磁盘在格式化前必须经过初始化,以用来数据存储。
9 \) ~! \0 n/ O, I此命令可以初始化物理磁盘也可以初始化虚拟磁盘。 ! b" t/ v2 e* f9 @2 ?) O
下面将演示如何将一个或者多个磁盘进行初始化。
5 V; L/ F" |! T: Q5 B在本次演示中将初始化两个SSD 同时其分区形式为GPT
6 P: _$ J3 ]6 m- D5 f, O5 Q同时我们将定义一个变量用于接收命令产生的对象,用于简化输入
: m3 e" l) Q9 s+ i第一步 通过get-disk 命令查找未初始化的磁盘 ( f' e" X% E; Q/ T# h3 c
如下图
4 X& r2 d. [: ^3 R
0 p% S4 B5 @/ o) L) F# |1 A第二步 定义变量 $disk_init 内容为get-disk产生的对象
) X: f0 [, t8 I0 M( R9 E7 w
7 o7 N; J; L4 z) y* \1 [8 a
6 T2 k- j& r9 d1 |% g" n) H+ V
% V5 r* _' f, U第三步 使用管道符号将变量内容传递给 initialize-disk 命令 6 Z* ?3 s- U/ O5 r5 F: R" }; V$ v
同时指定参数 PartitionStyle 其参数值为GPT / K8 `9 f4 O: a2 x" g+ y* ~0 v7 H2 x
2 u6 }9 Q, p8 B! r' z4 m
此时位于变量 $disk_init 中的磁盘对象将逐一传递给initialize-disk 命令进行初始化
. t% y X8 @; a, w0 eClear-disk 4 S: b1 S2 y2 K% r# s6 l) a) ^
此命令用于清除选中磁盘的分区信息,并且将磁盘重置到未初始化的状态
% i$ L* c8 `( ]# G" _! r注意:已经池化的磁盘无法通过此命令执行清除操作 此操作会使选中磁盘上的数据全部丢失!!请谨慎使用
* k8 n$ Y" c) L1 W$ H. }/ `下面将演示使用此命令进行清除操作
; c: b+ |8 x& @) D1 D2 O6 p环境 环境中有一个SSD 同时有一个分区分区形式为GPT且使用全部磁盘容量,分配盘符为E,磁盘编号为0, 1 T) T9 k3 ^" b3 J }7 _
如下图所示 9 N2 D! B4 m0 J! e
9 p) j$ O' d: y7 Y, Y& a6 O g* K4 N8 W: t2 w- G b7 i# Y
3 o# A2 x& u/ s6 L1 d7 R使用Clear-Disk -Number 0 对其进行清除 运行后如下图 4 O7 T0 s0 n7 f {% B# P v; g- P

: z/ ]6 p7 ^8 X) j
. G: `% \1 P) u$ h$ [( o' O图中出现红色错误,提示我们在拥有分区的情况下无法清除,请使用removedata 参数
( a9 g7 F+ V5 o* i9 D下面我们添加removedata 参数 运行后如下
% f( V3 g B# k7 C% p e0 S( j- ]4 n( s5 O

: A0 Z- i3 W) J9 `
) M% k+ n/ H/ Z; i. T
9 }& l. k& Y. N( U( o0 \/ j+ o2 A提示: 在仅仅完成初始化的磁盘上进行清除操作时候无需添加removedata参数
' P0 @( n1 b7 M. P 提问:如何同时对多个磁盘进行清除 ; X+ i8 Z' T. N! q8 I2 H, F
7 r9 j- ?! E; U% ^
# R' y$ v% v0 K6 n" YUpdate-disk * L% C/ E( }0 Z: c, g5 ~& Y0 A6 r9 H
此命令用于刷新磁盘缓存信息状态。 # F1 @- ]+ E" T; |- ?% A& _
默认情况下update-disk 将刷新全部磁盘状态 2 B5 k% k x. l
注意某些多磁盘系统上此命令可能运行很长时间 . R; w" g% Q) |# Z/ B8 b" H
在刷新状态时候我们可以使用公共参数 –asjob使其任务进入后台图下图
" I6 w( m s% [, S0 i# {
! x9 x7 ~! s% q此后我们使用get-job 来获取任务状态如下图
) M/ s6 R' k2 j1 F* s Z0 l) U) K) c4 P, a( c" u% W0 z1 T8 x+ }1 B% Q
对于获取已经完成的任务信息我们使用Receive-Job 进行获取 & J9 V, d: Q8 h0 V; c* W$ G! f
提问: 2 r7 P# B! |$ S2 f
请尝试使用Receive-Job 获取本里中结果 & o! S; V9 U. m8 I# G
, L* z! k! ^! r" j3 ^
. P; ~) c9 s; x
& U5 o/ E% |( ~5 ^ |