我正在尝试通过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时,我也注意到了同样的行为。脚本中的运算符。作为一般惯例,我避免使用该运算符。
答案 0 :(得分:0)
有一个隐藏的角色(在这种情况下,它是â)。我只是删除了有问题的行并重新输入了它。