Beispiel #1
0
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
}