Powershell - 在脚本中调用 VBoxManage.exe
Powershell - Calling VBoxManage.exe in a Script
[string]$VBoxManage="`"C:\Program Files\Oracle\VirtualBox\VBoxManage.exe`""
[string]$VMtoClone="`"C:\Users\someuser\VirtualBox VMs\CloneMe\CloneMe.vdi`""
[string]$VMCloned="`"C:\Users\someuser\VirtualBox VMs\CloneMe\CloneMe_2.vdi`""
[string]$cloneVDI="clonevdi"
Write-Output ($VBoxManage + " " + $cloneVDI + " " + $VMtoClone + " " + $VMCloned)
$commandtoinvoke=($VBoxManage + " " + $cloneVDI + " " + $VMtoClone + " " + $VMCloned)
Invoke-Expression $commandtoinvoke
我正在使用 powershell 脚本克隆虚拟机。我遇到的问题是以下错误:
Invoke-Expression : At line:1 char:53
+ "C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" clonevdi "C:\Users\someuser\Virt ...
+ ~~~~~~~~
Unexpected token 'clonevdi' in expression or statement.
At line:10 char:1
+ Invoke-Expression $commandtoinvoke
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ParserError: (:) [Invoke-Expression], ParseException
+ FullyQualifiedErrorId : UnexpectedToken,Microsoft.PowerShell.Commands.InvokeExpressionCommand
这个错误是什么意思?我是如何防止它发生的?
在这种情况下不要使用Invoke-Expression,它会尝试以表达式解析模式解析字符串,这就是它被称为Invoke-Expression的原因。在这种情况下最好使用调用运算符:
& $VBoxManage $cloneVDI $VMtoClone $VMCloned
请注意,不需要引用参数,这是自动完成的。
见https://rkeithhill.wordpress.com/2007/11/24/effective-powershell-item-10-understanding-powershell-parsing-modes/
和 about_Parsing.
[string]$VBoxManage="`"C:\Program Files\Oracle\VirtualBox\VBoxManage.exe`""
[string]$VMtoClone="`"C:\Users\someuser\VirtualBox VMs\CloneMe\CloneMe.vdi`""
[string]$VMCloned="`"C:\Users\someuser\VirtualBox VMs\CloneMe\CloneMe_2.vdi`""
[string]$cloneVDI="clonevdi"
Write-Output ($VBoxManage + " " + $cloneVDI + " " + $VMtoClone + " " + $VMCloned)
$commandtoinvoke=($VBoxManage + " " + $cloneVDI + " " + $VMtoClone + " " + $VMCloned)
Invoke-Expression $commandtoinvoke
我正在使用 powershell 脚本克隆虚拟机。我遇到的问题是以下错误:
Invoke-Expression : At line:1 char:53
+ "C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" clonevdi "C:\Users\someuser\Virt ...
+ ~~~~~~~~
Unexpected token 'clonevdi' in expression or statement.
At line:10 char:1
+ Invoke-Expression $commandtoinvoke
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ParserError: (:) [Invoke-Expression], ParseException
+ FullyQualifiedErrorId : UnexpectedToken,Microsoft.PowerShell.Commands.InvokeExpressionCommand
这个错误是什么意思?我是如何防止它发生的?
在这种情况下不要使用Invoke-Expression,它会尝试以表达式解析模式解析字符串,这就是它被称为Invoke-Expression的原因。在这种情况下最好使用调用运算符:
& $VBoxManage $cloneVDI $VMtoClone $VMCloned
请注意,不需要引用参数,这是自动完成的。
见https://rkeithhill.wordpress.com/2007/11/24/effective-powershell-item-10-understanding-powershell-parsing-modes/ 和 about_Parsing.