0
我试图通过厨师自动设置驱动器。我的厨师客户声称powershell_script成功运行,但是脚本的内容没有实际运行。我已经一行一行,并可以确定哪些行包括导致此行为 - 但我不知道为什么会发生,我也不知道要解决它。厨师powershell_script通过但实际上并没有运行脚本
下面是代码的简化版本(我都相应要求我metadata.rb语句):
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
人有什么想法?是否有一些我需要转义的保留字符?
我也注意到在脚本中使用“-not”操作符时也有相同的行为。作为一种惯例,我避免使用该操作符。
如果使用普通变量代替环境变量会发生什么? – arco444
为了简单起见,我尝试了对所有变量进行硬编码,但它仍然无效。粘贴PowerShell交互式控制台中的所有代码都会导致预期的行为。 – badazzhindu