0

我知道我可以用来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 脚本也可能是一种选择。

4

1 回答 1

1

您可以通过管道传输到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'
于 2020-11-10T16:48:22.913 回答