ฉันมีไฟล์แบตช์ Windows cmd ที่ควรดึงรายชื่อไฟล์ที่อยู่บนเซิร์ฟเวอร์ FTP ผ่าน sFTP โดยใช้ PuTTY PSFTP exe และใช้สำหรับการประมวลผลเพิ่มเติม cmd คือ:
เสียงสะท้อน | psftp -l myusername -pw mycomplexpwd FTPServerHostname > C:/Users/myuser/Desktop/ls.txt
มันควรจะส่งออกรายการใน ls.txt
ไฟล์ที่ฉันใช้ในสคริปต์อื่น เมื่อเรียกใช้ในฐานะผู้ใช้ทั่วไป ฉันได้รับรายชื่อไม่เป็นไร อย่างไรก็ตาม เมื่อใช้ Task Scheduler และกำหนดเวลาสคริปต์เป็น ระบบ
ผู้ใช้ ฉันได้รับสิ่งนี้ในไฟล์เอาต์พุตเท่านั้น:
ไดเร็กทอรีการทำงานระยะไกลคือ /
psftp> เลิก
ฉันเดาว่ามีปัญหาในท่อ |
การใช้งานหรือบางอย่าง ดังนั้นฉันจึงลองใช้ไวยากรณ์นี้ด้วย แต่ผลลัพธ์เดียวกันด้วย:
psftp -l myusername -pw mycomplexpwd FTPServerHostname < C:/Users/myuser/Desktop/lscmd.txt > C:/Users/myuser/Desktop/ls.txt
อะไรเป็นสาเหตุของปัญหาเมื่อตั้งเวลางานเป็นระบบแทนที่จะเป็นผู้ใช้ของฉัน แล้วจะรับรายชื่อเป็นระบบได้อย่างไร? โปรดทราบว่าเมื่อรันสคริปต์ในฐานะผู้ดูแลระบบ (คลิกขวา - เรียกใช้ในฐานะผู้ดูแลระบบ) ฉันได้รับรายชื่อไม่เป็นไร ปัญหาจะเกิดขึ้นเฉพาะเมื่อใช้ตัวกำหนดตารางเวลางานและกำหนดเวลางานเป็นระบบ
ระบบปฏิบัติการคือ Windows Server 2012 R2