我们所有的服务器都增加了磁盘分配。我不想打字:
Select disk 6
Select Partition 1
Extend
Select disk 7
Select Partition 1
Extend
.....
Run Code Online (Sandbox Code Playgroud)
对于每台服务器 10 个卷,对于 100 个服务器......
有没有办法让powershell扫描磁盘,寻找可用空间大于100MB的磁盘。那么它是否扩展了所述磁盘上的分区?
运行 2008R2 的服务器
$psVersion Table
Name Value
---- -----
CLRVersion 2.0.50727.5485
BuildVersion 6.1.7601.17514
PSVersion 2.0
WSManStackVersion 2.0
PSCompatibleVersions {1.0, 2.0}
SerializationVersion 1.1.0.1
PSRemotingProtocolVersion 2.1
Run Code Online (Sandbox Code Playgroud)
由于diskpart从 STDIN 读取命令,您可以执行以下操作:
'list disk' | diskpart | Where-Object {
$_ -match 'disk (\d+)\s+online\s+\d+ .?b\s+\d+ [gm]b'
} | ForEach-Object {
$disk = $matches[1]
"select disk $disk", "list partition" | diskpart | Where-Object {
$_ -match 'partition (\d+)'
} | ForEach-Object { $matches[1] } | ForEach-Object {
"select disk $disk", "select partition $_", "extend" | diskpart | Out-Null
}
}
Run Code Online (Sandbox Code Playgroud)
第一个正则表达式仅选择具有 MB 或 GB 范围 ( [gm]b)可用空间的磁盘。根据需要进行调整。
将diskpart调用包装到函数中,使它们更“易于理解”:
function List-Disks {
'list disk' | diskpart |
Where-Object { $_ -match 'disk (\d+)\s+online\s+\d+ .?b\s+\d+ [gm]b' } |
ForEach-Object { $matches[1] }
}
function List-Partitions($disk) {
"select disk $disk", "list partition" | diskpart |
Where-Object { $_ -match 'partition (\d+)' } |
ForEach-Object { $matches[1] }
}
function Extend-Partition($disk, $part) {
"select disk $disk","select partition $part","extend" | diskpart | Out-Null
}
List-Disks | ForEach-Object {
$disk = $_
List-Partitions $disk | ForEach-Object {
Extend-Partition $disk $_
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14672 次 |
| 最近记录: |