You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在强制转换为[void]的PowerShell命令中使用行续行?

解决[void]与PowerShell命令拆分的兼容问题

嘿,这个问题我之前折腾过!核心原因是PowerShell对`换行符和[void]语法的解析规则不一样,咱们把关键点理清楚:

问题根源

[void]是PowerShell的类型加速器,作用是抑制命令的输出,但它的语法要求非常严格:必须紧跟括号包裹的完整表达式,不能在[void]和(之间用`符号换行拆分。

你不带[void]时能正常拆分,是因为此时New-VM本身就是一个独立的命令,符号只是告诉PowerShell“命令还没写完,下一行继续”;但加了[void]后,PowerShell会把[void]当成单独的命令,后面换行的(`就成了语法错误。

正确的拆分方式

推荐两种写法,都能完美解决问题:

写法一:[void]与(紧密相连,括号内拆分参数

[void](New-VM -Name $serveur `
-Template $template `
-vmhost $vmhost `
-datastore $datastore.name `
-description $description `
-errorvariable erreur `
-erroraction silentlycontinue)

这里要确保[void]和(之间没有用换行(空格没问题),括号内的参数用拆分完全正常。

写法二:括号内换行(无需`符号,更简洁)

其实PowerShell在括号内部会自动识别参数换行,完全可以去掉`符号,写法更干净:

[void](
    New-VM -Name $serveur
    -Template $template
    -vmhost $vmhost
    -datastore $datastore.name
    -description $description
    -errorvariable erreur
    -erroraction silentlycontinue
)

这种方式可读性更强,也避免了`符号可能带来的语法问题。

避坑提醒

千万别犯这个错:在[void]和(之间加`换行,比如:

# ❌ 错误写法,会触发语法错误
[void]`
(New-VM -Name $serveur `
-Template $template)

PowerShell会把[void]当成单独的命令执行,后面的(就成了无效语法。

内容的提问来源于stack exchange,提问作者chris

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 09:05:44