diskpart 可以带命令行参数吗?或者我可以用 powershell 伪造它们吗?
Can diskpart take command line parameters? Or can I fake them with powershell?
我明白我可以use diskpart /s
to script diskpart
select vdisk file=FILE_SUPPLIED_BY_COMMAND_LIME_PARAMETER
attach vdisk readonly
compact vdisk
detach vdisk
exit
然后 运行 它与:
diskpart /s scriptname.txt /t 15
但是我可以将命令 lime 参数添加到 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'
我明白我可以use diskpart /s
to script diskpart
select vdisk file=FILE_SUPPLIED_BY_COMMAND_LIME_PARAMETER
attach vdisk readonly
compact vdisk
detach vdisk
exit
然后 运行 它与:
diskpart /s scriptname.txt /t 15
但是我可以将命令 lime 参数添加到 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'