Chef powershell_script通过但实际上并没有运行脚本

时间:2014-06-12 14:05:48

标签: powershell chef chef-recipe powershell-v4.0

我正在尝试通过Chef自动设置驱动器。我的chef-client声称powershell_script成功运行,但是脚本的所有内容都没有实际运行。我一行一行,可以确定包含哪一行导致这种行为 - 但我不知道它为什么会发生,我也不知道解决它。

这是代码的简化版本(我在metadata.rb中有所有相应的require语句):

powershell_script 'SetupTilesDrive' do
    environment ({'driveLetter' => "G", 'drive' => "G:"})
    code <<-EOF
        if (Test-Path $env:drive) {
            Write-Host Disk already exists
            Exit 0
        }

        $offlineDisk = Get-Disk | Where-Object { $_.IsOffline -eq $true }
        if ($offlineDisk -eq $null) {
            Write-Host There is no offline disk; therefore, cannot systematically figure out which disk should be MAPDATA
            Exit 1
        }

        $diskNumber = $offlineDisk[0].Number

        Set-Disk -Number $diskNumber -IsOffline $false
        Set-Disk -Number $diskNumber -IsReadonly $false
        Clear-Disk $diskNumber -Confirm:$false
        Initialize-Disk $diskNumber

        # The following two lines cause this to break
        New-Partition -DiskNumber $diskNumber -DriveLetter $env:driveLetter -UseMaximumSize
        Format-Volume -DriveLetter $env:driveLetter -NewFileSystemLabel MAPDATA -confirm:$false
    EOF

删除以下两行后:

        New-Partition -DiskNumber $diskNumber -DriveLetter $env:driveLetter -UseMaximumSize
        Format-Volume -DriveLetter $env:driveLetter -NewFileSystemLabel MAPDATA -confirm:$false

脚本将运行并执行相关步骤,但我的驱动器设置尚未完成。

简单地尝试在调试中写入 - 托管命令(单独),也不打印出来(即下面的块)

powershell_script 'PrintThis' do
    code <<-EOF
       $diskNumber = 1
       $env:driveLetter = "G"
       Write-Host "New-Partition -DiskNumber $diskNumber -DriveLetter $env:driveLetter -UseMaximumSize"
    EOF
end

有人有什么想法吗?是否有一些我遗失的保留字符需要逃脱?

使用&#34; -not&#34时,我也注意到了同样的行为。脚本中的运算符。作为一般惯例,我避免使用该运算符。

1 个答案:

答案 0 :(得分:0)

有一个隐藏的角色(在这种情况下,它是â)。我只是删除了有问题的行并重新输入了它。