Thanks Michael, 
What i ended up having to do was create a separate powershell process then 
run invoke-webrequest there because start-process allows for -wait.

   exec { 'client_setup':
     command => '(Start-Process powershell -ArgumentList (Invoke-WebRequest 
"Invoke-WebRequest "$$file_source/file.exe " -outfile 
C:/Windows/dir/file.exe))',
     provider => powershell,
     creates => 'C:/Windows/dir/file.exe'
     require => Package['client_package'],
   }
(Start-Process powershell -ArgumentList (Invoke-WebRequest 
"Invoke-WebRequest "$$file_source/file.exe " -outfile 
C:/Windows/dir/file.exe))

On Tuesday, September 11, 2018 at 8:36:27 AM UTC-5, Michael Watters wrote:
>
> You should be able to add a require => Package['client_package'] parameter 
> to the exec resource to resolve this.  For example:
>
>
> $file_source = lookup('application.client')
>
>   if $facts['domain'] == 'internal' {
>    file { 'sccm_setup':
>      path    => 'C:/Windows/ccmsetup/ccmsetup.exe',
>      source  => "$file_source /file.exe"
>    }
>  }
>  else {
>    exec { 'client_setup':
>      command => 'Invoke-WebRequest "$$file_source/file.exe " -outfile 
> "C:/Windows/dir/file.exe" ',
>      provider => powershell,
>      creates => 'C:/Windows/dir/file.exe'
>      require => Package['client_package'],
>    }
>  }
> package { 'client_package':
> }
>
>
>
> On Tuesday, September 11, 2018 at 9:09:25 AM UTC-4, Jason McMahan wrote:
>>
>> Thanks Michael, 
>> I think my problem is not syntax but rather the invoke-webrequest is not 
>> actually completing before moving to the package resource. Then as the file 
>> doesnt exist the run fails.
>> Back to drawing board.
>>
>> Appreciate the quick reply.
>>
>>
>> On Tuesday, September 11, 2018 at 7:27:49 AM UTC-5, Michael Watters wrote:
>>>
>>> What you have there looks fine but I would change the elsif to an else 
>>> statement.
>>>
>>>
>>> On Tuesday, September 11, 2018 at 8:08:53 AM UTC-4, Jason McMahan wrote:
>>>>
>>>> Good day,
>>>> I am attempting to add require to an if statement and not sure i am 
>>>> doing it right. Any help would be greatly appreciated.
>>>>
>>>> If the machine is joined to our internal domain it will use a file 
>>>> resource, if external i am using a invoke-webrequest as the file is on 
>>>> azure blob storage.
>>>>   
>>>>
>>>>   $file_source = lookup('application.client')
>>>>
>>>>   if $facts['domain'] == 'internal' {
>>>>     file { 'sccm_setup':
>>>>       path    => 'C:/Windows/ccmsetup/ccmsetup.exe',
>>>>       source  => "$file_source /file.exe"
>>>>     }
>>>>   }
>>>>   elsif $facts['domain'] != 'internal' {
>>>>     exec { 'client_setup':
>>>>       command => 'Invoke-WebRequest "$$file_source/file.exe " -outfile 
>>>> "C:/Windows/dir/file.exe" ',
>>>>       provider => powershell,
>>>>       creates => 'C:/Windows/dir/file.exe'
>>>>     }
>>>>   }
>>>>  package { 'client_package':
>>>> }
>>>>
>>>

-- 
You received this message because you are subscribed to the Google Groups 
"Puppet Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/puppet-users/5582a659-d94e-4272-8a41-8a1591366e71%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to