如何使用命令强制转换为[void]来使用行继续?

时间:2018-04-27 14:44:26

标签: powershell syntax

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

嗨,我正试图用`来分割这一行。它没有[void]。它不适用于[void]

我错过了什么?

3 个答案:

答案 0 :(得分:3)

如果只是考虑使用更清晰的代码,请考虑使用splatting而不是反引号/续行。

$newVMArguments = @{
    Name          = $serveur 
    Template      = $template 
    vmhost        = $vmhost 
    datastore     = $datastore.name 
    description   = $description 
    errorvariable = "erreur" 
    erroraction   = [Management.Automation.ActionPreference]::SilentlyContinue
}
[void](New-VM @newVMArguments)       
在这种情况下,

Out-Null也可以正常工作。 Splatting使代码更容易管理,然后不得不处理反引号等。

答案 1 :(得分:2)

如何使用Out-Null代替:

New-VM -Name $serveur `
       -Template $template `
       -vmhost $vmhost `
       -datastore $datastore.name `
       -description $description `
       -errorvariable erreur `
       -erroraction silentlycontinue | Out-Null

答案 2 :(得分:1)

Matt's helpful answer显示splatting是使用`的换行符的高级替代方法,boxdog's helpful answer显示为Out-Null的管道,作为转换为[void]的替代方法。< / p>

转换为[void]以取消命令的输出需要将其封装在(...)

分配给$null,另一种选择,避免这种尴尬:

$null = NewVM -Name $serveur `
              -Template $template `
              ...

但是,只是为了表明仍然可以使用基于[void]的解决方案:

[void] (Get-Date `
                -Uformat %s
)