func fetchList(client *winrm.Client, remotePath string) ([]FileItem, error) { script := fmt.Sprintf("Get-ChildItem %s", remotePath) stdout, stderr, _, err := client.RunWithString("powershell -Command \""+script+" | ConvertTo-Xml -NoTypeInformation -As String\"", "") if err != nil { return nil, errors.New(fmt.Sprintf("Couldn't execute script %s: %v", script, err)) } if stderr != "" { if os.Getenv("WINRMCP_DEBUG") != "" { log.Printf("STDERR returned: %s\n", stderr) } } if stdout != "" { doc := pslist{} err := xml.Unmarshal([]byte(stdout), &doc) if err != nil { return nil, errors.New(fmt.Sprintf("Couldn't parse results: %v", err)) } return convertFileItems(doc.Objects), nil } return []FileItem{}, nil }