diskpart可以使用命令行参数吗?或者我可以用powershell伪造它们吗



我知道我可以使用diskpart /s为diskpart 编写脚本

select vdisk file=FILE_SUPPLIED_BY_COMMAND_LIME_PARAMETER
attach vdisk readonly
compact vdisk
detach vdisk
exit

然后用运行

diskpart /s scriptname.txt /t 15

但是我可以将命令石灰参数添加到diskpart吗例如,这样我就可以通过命令行指定VHDX文件了?

如果这不可能,使用Powershell包装器伪造命令行参数以动态生成diskpart脚本可能也是一种选择。

您可以通过管道连接到diskpart。当检索到文件内容时,我会读取文件并替换您的值:

$diskPath = c:disk.vhd
(Get-Content scriptname.txt) -replace 'FILE_SUPPLIED_BY_COMMAND_LIME_PARAMETER',$diskPath | diskpart 

您可以使用字符串并绕过读取文件:

$diskPath = 'c:disk.vhd'
@"
select vdisk file=$diskPath
attach vdisk readonly
compact vdisk
detach vdisk
"@ | diskpart

如果要使用参数,则需要一个函数或脚本块。使用脚本块:

# scriptname.txt contents
@"
select vdisk file=$($args[0])
attach vdisk readonly
compact vdisk
detach vdisk
"@ | diskpart
# The string argument for Invoke(argument) is passed to args[0]
[Scriptblock]::Create((Get-Content scriptname.txt -Raw)).Invoke('file path') 

使用功能:

function Run-Diskpart {
param($diskPath)
@"
select vdisk file=$diskPath
attach vdisk readonly
compact vdisk
detach vdisk
"@ | diskpart
}
Run-DiskPart 'c:disk.vhd'

最新更新