gpt4 book ai didi

powershell - Powershell-VirtualBox克隆脚本错误

转载 作者:行者123 更新时间:2023-12-03 00:01:07 24 4
gpt4 key购买 nike

码:

[string]$vmPath = "C:\Users\someuser\VirtualBox VMs\"
[string]$vmName="Xubuntu_Version_"
[string]$vBoxManage = "C:\Program Files\Oracle\VirtualBox\VBoxManage.exe"
[string]$vBoxClonevdi = "clonevdi"
[string]$vBoxVMName = Get-Content -Path "C:\Users\someuser\VirtualBox VMs\log.txt"
[string]$invokeCommand
[string]$filetype=".vdi"
[string]$writeVersiontoText
[string]$vBoxManagewithQuotes= ([char]34 +$vBoxManage + [char]34 + " " +$vBoxClonevdi)

if(Test-Path ("C:\Users\someuser\VirtualBox VMs\log.txt")){

[int]$ConvertNum = -1
[int]::TryParse($vBoxVMName.Substring(16), [ref]$ConvertNum)

Write-Output ("Version Number: " + $ConvertNum)
$ConvertAfter = $ConvertNum + 1
Write-Output ("New Version: " + $ConvertAfter)

$writeVersiontoText = $vmPath+$vmName+$ConvertAfter+$filetype
$write= ($vmName + $ConvertAfter)

$invokeCommand = ($vBoxManagewithQuotes + " " + [char]34+$vmPath+$vmName+$ConvertNum + [char] 34 + " " + [char]34+$writeVersiontoText+ [char]34)
Write-Output $invokeCommand


Invoke-Expression $invokeCommand

if(Test-Path ($writeVersiontoText)){
$write | Set-Content "C:\Users\someuser\VirtualBox VMs\log.txt"
}

}

问题:

我正在编写一个使用Virtual Box Manage实用程序(VBoxManage.exe)克隆虚拟机的脚本。我遇到的问题是它给我clonevdi部分一个错误。到底是什么问题,我该如何解决?

错误报告:
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:27 char:9
+ Invoke-Expression $invokeCommand
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ParserError: (:) [Invoke-Expression], ParseException
+ FullyQualifiedErrorId : UnexpectedToken,Microsoft.PowerShell.Commands.InvokeExpressionCommand

最佳答案

简短答案:

我认为您只需要更改以下内容:

Invoke-Expression $invokeCommand

对此:
& $vBoxManage $vBoxClonevdi ([char]34+$vmPath+$vmName+$ConvertNum + [char] 34  + " " + [char]34+$writeVersiontoText+ [char]34)

更长的答案:

我不会在代码中使用[char] 34,而是使用反引号(`)来对双引号进行转义,并重新构建变量,以便于阅读。

然后,使用调用运算符(&)将允许可执行文件被调用。这样的可执行文件需要有自己的变量,否则Powershell将寻找以exec +提供的参数命名的可执行文件。需要在可执行变量之后添加其他参数,因此结构如下:
& $vBoxManage $vBoxManage other params here

关于powershell - Powershell-VirtualBox克隆脚本错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28330278/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com