2014-06-12 3 views
0

요리사를 통해 드라이브 설정을 자동화하려고합니다. 내 요리사 - 클라이언트는 powershell_script가 성공적으로 실행되지만 스크립트의 내용은 실제로 실행되지 않았다고 주장합니다. 나는 한 줄 씩 나아 갔고, 포함될 때이 줄을 찾아 낼 수 있습니다. 그러나 왜 그런 일이 벌어지는 지 전혀 알지 못합니다. 여기 요리사 powershell_script가 전달되지만 실제로 스크립트가 실행되지 않습니다.

코드의 단순화 된 버전 (I 적절한 내 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"연산자를 사용할 때도 동일한 동작을 발견했습니다. 일반적으로 나는 그 연산자의 사용을 피했다.

+0

환경 변수 대신 일반 변수를 사용하면 어떻게됩니까? – arco444

+0

나는 단순화를 위해 모든 변수를 하드 코딩하려고 시도했지만 여전히 작동하지 않습니다. PowerShell 대화 형 콘솔에 모든 코드를 붙여 넣으면 모든 결과가 의도 한대로 작동합니다. – badazzhindu

답변

0

숨겨진 문자가 있습니다 (이 경우는 â). 나는 단순히 문제의 라인을 제거하고 다시 타이핑했다.

관련 문제