Hi group!

Hoping that someone can help me with  an issue I'm having. It's in a 
windows environment.
I'm trying to run a script on a remote windows machine using Bolt. The 
script looks up the latest version of chocolatey from a on prem nuget feed, 
downloads and installs chocolatey.

Running the script with this command:
bolt script run .\chocolatey_install.ps1 --nodes winrm://xxxxxxx --user 
userx--password --no-ssl 

It returns a 401 error when making a web request to the nuget feed, using 
System.Net.Webclient from .Net:
Querying latest package from http:
//xxx.xxxx.xxx/DefaultCollection/_packaging/Testfeed/nuget/v2/Packages()?$filter=(Id%20eq%20%27chocolatey%27)%20and%20IsLatestVersion
  STDERR:
    $invokeArgs = @{
     : System.Management.Automation.MethodInvocationException: Exception 
calling "DownloadString" with "1" argument(s): "The remote server returned 
an error: (401) Unauthorized." ---> System.Net.WebException: The remote 
server returned an error: (401) Unauthorized.
       at System.Net.WebClient.DownloadDataInternal(Uri address, WebRequest& 
request)
       at System.Net.WebClient.DownloadString(Uri address)
       at CallSite.Target(Closure , CallSite , Object , String )
       --- End of inner exception stack trace ---
       at System.Management.Automation.ExceptionHandlingOps.
CheckActionPreference(FunctionContext funcContext, Exception exception)
       at 
System.Management.Automation.Interpreter.ActionCallInstruction`2.Run(InterpretedFrame
 
frame)
       at 
System.Management.Automation.Interpreter.EnterTryCatchFinallyInstruction.Run(InterpretedFrame
 
frame)
       at 
System.Management.Automation.Interpreter.EnterTryCatchFinallyInstruction.Run(InterpretedFrame
 
frame)
       at 
System.Management.Automation.Interpreter.Interpreter.Run(InterpretedFrame 
frame)
       at 
System.Management.Automation.Interpreter.LightLambda.RunVoid1[T0](T0 arg0)
       at 
System.Management.Automation.ScriptBlock.InvokeWithPipeImpl(ScriptBlockClauseToInvoke
 
clauseToInvoke, Boolean createLocalScope, Dictionary`2 functionsToDefine, 
List`1 variablesToDefine, ErrorHandlingBehavior errorHandlingBehavior, 
Object dollarUnder, Object input, Object scriptThis, Pipe outputPipe, 
InvocationInfo invocationInfo, Object[] args)
       at 
System.Management.Automation.ScriptBlock.<>c__DisplayClass57_0.<InvokeWithPipe>b__0()
       at 
System.Management.Automation.Runspaces.RunspaceBase.RunActionIfNoRunningPipelinesWithThreadCheck(Action
 
action)
       at System.Management.Automation.ScriptBlock.InvokeWithPipe(Boolean 
useLocalScope, ErrorHandlingBehavior errorHandlingBehavior, Object 
dollarUnder, Object input, Object scriptThis, Pipe outputPipe, 
InvocationInfo invocationInfo, Boolean propagateAllExceptionsToTop, List`1 
variablesToDefine, Dictionary`2 functionsToDefine, Object[] args)
       at System.Management.Automation.ScriptBlock.InvokeUsingCmdlet(Cmdlet 
contextCmdlet, Boolean useLocalScope, ErrorHandlingBehavior 
errorHandlingBehavior, Object dollarUnder, Object input, Object scriptThis, 
Object[] args)
       at Microsoft.PowerShell.Commands.InvokeCommandCommand.EndProcessing()
       at System.Management.Automation.CommandProcessorBase.Complete()
        + CategoryInfo          : NotSpecified: (:) [Write-Error], 
WriteErrorException
        + FullyQualifiedErrorId : 
Microsoft.PowerShell.Commands.WriteErrorException




Here are the relevant parts of the code:
function Get-Downloader {
param (
  [string]$url
 )
  $downloader = new-object System.Net.WebClient
  $downloader.UseDefaultCredentials  = $true
 
  return $downloader
}



function Download-Package {
param (
  [string]$packageODataSearchUrl,
  [string]$file
 )
  $downloader = Get-Downloader $packageODataSearchUrl
  
  Write-Output "Querying latest package from $packageODataSearchUrl"
NEXT LINE IS WHERE IT CRASHES
  [xml]$pkg = $downloader.DownloadString($packageODataSearchUrl)


 I have verified that userx is allowed to query the server. I have also 
tested to manually move the script to the remote machine and run it locally 
as userx AND THAT WORKS. 
Does anyone know if there is a problem/bug when accessing the credentials 
of the user running a script (through WebClient.UseDefaultCredentials) when 
the script is run by Bolt? I can think of many workaround, but I can't 
understand why this won't work.

Cheers!
Toband, the frustrated developer

-- 
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 puppet-users+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/puppet-users/7d5f7bdd-fa0c-4d9e-b95f-59d6d9e0df61%40googlegroups.com.

Reply via email to