diff --git a/provisioner/elevated.go b/provisioner/elevated.go index d34e97e0a..099d20024 100644 --- a/provisioner/elevated.go +++ b/provisioner/elevated.go @@ -25,6 +25,7 @@ type elevatedOptions struct { TaskDescription string LogFile string XMLEscapedCommand string + ScriptFile string } var psEscape = strings.NewReplacer( @@ -117,6 +118,14 @@ $result = $t.LastTaskResult if (Test-Path $log) { Remove-Item $log -Force -ErrorAction SilentlyContinue | Out-Null } + +$script = [System.Environment]::ExpandEnvironmentVariables("{{.ScriptFile}}") +if (Test-Path $script) { + Remove-Item $script -Force -ErrorAction SilentlyContinue | Out-Null +} +$f = $s.GetFolder("\") +$f.DeleteTask("\$name", "") + [System.Runtime.Interopservices.Marshal]::ReleaseComObject($s) | Out-Null exit $result`)) @@ -166,12 +175,16 @@ func GenerateElevatedRunner(command string, p ElevatedProvisioner) (uploadedPath elevatedPassword, escapedElevatedPassword) } + uuid := uuid.TimeOrderedUUID() + path := fmt.Sprintf(`C:/Windows/Temp/packer-elevated-shell-%s.ps1`, uuid) + // Generate command err = elevatedTemplate.Execute(&buffer, elevatedOptions{ User: escapedElevatedUser, Password: escapedElevatedPassword, TaskName: taskName, TaskDescription: "Packer elevated task", + ScriptFile: path, LogFile: logFile, XMLEscapedCommand: escapedCommand, }) @@ -180,8 +193,6 @@ func GenerateElevatedRunner(command string, p ElevatedProvisioner) (uploadedPath fmt.Printf("Error creating elevated template: %s", err) return "", err } - uuid := uuid.TimeOrderedUUID() - path := fmt.Sprintf(`C:/Windows/Temp/packer-elevated-shell-%s.ps1`, uuid) log.Printf("Uploading elevated shell wrapper for command [%s] to [%s]", command, path) err = p.Communicator().Upload(path, &buffer, nil) if err != nil {