ข้อผิดพลาด 623 จาก rasdial คือความล้มเหลวในการค้นหา ไม่ใช่ความล้มเหลวของเครือข่าย: สมุดโทรศัพท์ไม่มีรายการที่ใช้ชื่อนั้น Windows คาดหวังว่าโปรไฟล์จะมีอยู่ก่อนที่คำสั่งใดจะเรียกต่อ และตัวเรียกต่อไม่เคยสร้างขึ้นเอง ตรวจสอบตามลำดับด้านล่าง เพราะแต่ละข้อถือว่าข้อก่อนหน้าผ่านแล้ว

อ่านรหัสข้อผิดพลาดก่อนสิ่งอื่นใด

รหัสที่ตามหลัง 623 อธิบายความขัดข้องอื่น ดังนั้นข้อความแรกที่คุณเห็นจะเป็นตัวกำหนดสาขา 691 คือการปฏิเสธข้อมูลรับรองกับโปรไฟล์ที่มีอยู่จริง และ 868 มักชี้ไปที่การแปลงชื่อสำหรับที่อยู่เซิร์ฟเวอร์ เฉพาะ 623 เท่านั้นที่ส่งคุณกลับไปยังการสร้างโปรไฟล์ เพราะฉะนั้นการรันคำสั่งเดิมซ้ำจึงแทบไม่เปลี่ยนอะไร

บันทึกสถานะออกในขั้นตอนเดียวกับที่เรียกต่อ คำสั่งถัดไปในสคริปต์จะเขียนทับ และรหัสจริงก็หายไปก่อนที่ใครจะอ่านบันทึก

rasdial "Office"; if ($LASTEXITCODE -ne 0) { Write-Output "failed: $LASTEXITCODE" }

ยืนยันว่ามีรายการในสมุดโทรศัพท์

ถาม Windows ว่ามีโปรไฟล์ใดจริง ๆ ก่อนเพิ่มอีกรายการ คำสั่งนี้คืนชื่อ ที่อยู่เซิร์ฟเวอร์ และสถานะการเชื่อมต่อปัจจุบัน และผลลัพธ์ว่างก็ตอบคำถามได้ทันที

Windows เก็บรายการของผู้ใช้แต่ละคนไว้ในไฟล์สมุดโทรศัพท์ไฟล์หนึ่ง และเก็บรายการของผู้ใช้ทั้งหมดไว้อีกไฟล์หนึ่ง ชื่อเดียวจึงชี้ไปยังเซิร์ฟเวอร์สองเครื่องที่ต่างกันได้ การซ้ำซ้อนนี้เองอธิบายสคริปต์ที่เรียกต่อปลายทางผิด ขณะที่การตั้งค่าที่คุณตรวจดูดูถูกต้องสมบูรณ์ จงระบุทั้งสองตำแหน่งก่อนสรุปสิ่งใดเกี่ยวกับชื่อนั้น

Get-VpnConnection -Name "Office" | Format-List Name, ServerAddress, ConnectionStatus
dir "%APPDATA%\Microsoft\Network\Connections\Pbk"
dir "%PROGRAMDATA%\Microsoft\Network\Connections\Pbk"

สร้างโปรไฟล์ด้วย Add-VpnConnection

สร้างรายการเพียงครั้งเดียวด้วยคำสั่งที่เขียนโปรไฟล์แบบเนทีฟ ไม่ใช่ด้วยการแก้ไขข้อความด้วยมือ ระบุที่อยู่เซิร์ฟเวอร์ ชนิดอุโมงค์ และวิธีพิสูจน์ตัวตนที่เกตเวย์ของคุณยอมรับจริง เพราะโปรไฟล์ที่เจรจาโปรโตคอลผิดจะล้มเหลวในภายหลังด้วยข้อความที่โทษเซิร์ฟเวอร์

คุณยังวางส่วนการเชื่อมต่อลงใน rasphone.pbk ด้วยมือได้ แต่ไม่มีสิ่งใดตรวจสอบการแก้ไขนั้น คีย์ผิดเพียงตัวเดียวทำให้ได้โปรไฟล์ที่ไม่พิสูจน์ตัวตนกับสิ่งใดเลย และข้อผิดพลาดที่เกิดขึ้นดูเหมือนความขัดข้องจากระยะไกล ไม่ใช่การพิมพ์ผิด

Add-VpnConnection -Name "Office" -ServerAddress vpn.corp.internal \
  -TunnelType Ikev2 -AuthenticationMethod Eap -EncryptionLevel Required

ทำให้เซสชันสอดคล้องกับที่เก็บข้อมูลรับรอง

รายการหนึ่งเป็นของผู้ใช้หรือของเครื่อง และใบรับรองหรือข้อมูลรับรองที่บันทึกไว้ข้างหลังอาจเข้าถึงได้จากเซสชันลงชื่อเข้าใช้เดียวเท่านั้น งานตามกำหนดเวลาที่ทำงานเป็น SYSTEM เป็นไคลเอนต์ที่ต่างจากบัญชีที่ลงชื่อเข้าใช้ และบริการในเซสชัน 0 ไม่มีเดสก์ท็อปให้แสดงข้อความแจ้ง ครั้งแรกที่เซสชันแบบโต้ตอบพบเครือข่ายที่ไม่รู้จัก Windows จะเปิดข้อความแจ้งตำแหน่งเครือข่าย และตัวเรียกต่อไม่มีสวิตช์ให้ปิดเสียง การแยกเซสชันหลีกเลี่ยงข้อความแจ้งนั้นและในขณะเดียวกันก็ลบบริบทผู้ใช้ที่วิธีพิสูจน์ตัวตนบางวิธีต้องการ

เลือกเจ้าของอย่างตั้งใจ: งานที่เริ่มเมื่อลงชื่อเข้าใช้สำหรับอุโมงค์ต่อผู้ใช้ หรือบริการสำหรับอุโมงค์ทั้งเครื่อง การผสมทั้งสองแบบและคาดหวังพฤติกรรมเดียวกันคือเหตุที่การเชื่อมต่อซึ่งทำงานด้วยมือเริ่มล้มเหลวภายใต้ระบบอัตโนมัติ

ปล่อยตัวกระตุ้นอัตโนมัติไว้อย่างที่พบ

Windows สามารถยกอุโมงค์ขึ้นเองได้เมื่อแอปพลิเคชันหรือเงื่อนไขเครือข่ายตรงกัน และการตัดการเชื่อมต่ออาจเพิ่มโปรไฟล์เข้าในรายการที่ปิดใช้งานของตัวกระตุ้นอัตโนมัติ ความพยายามอัตโนมัติครั้งถัดไปจึงไม่เกิดขึ้นเลย หลังจากสคริปต์ที่รับผิดชอบจบไปนานแล้ว ดังนั้นงานที่ตัดการเชื่อมต่อโดยไม่มีเงื่อนไขจึงทำลายพฤติกรรมเปิดตลอดสำหรับผู้ใช้อื่นทุกคนของเครื่องนั้น ผลข้างเคียงนี้มองไม่เห็นในบันทึกงาน และนั่นคือสิ่งที่ทำให้มีราคาแพง

บันทึกสถานะโปรไฟล์ก่อนงานจะทำงาน แล้วคืนให้เหมือนที่พบ แทนที่จะรื้ออุโมงค์ตามค่าเริ่มต้น การเปิดใช้ตัวกระตุ้นอีกครั้งเป็นการเปลี่ยนนโยบาย จึงควรมองว่าเป็นขั้นตอนที่ตั้งใจ ไม่ใช่การทำความสะอาด

มีสองขีดจำกัดที่อยู่รอดไม่ว่าคุณจะเขียนสคริปต์มากเพียงใด rasdial อาจรายงานความสำเร็จขณะที่บริการหลังอุโมงค์ยังเข้าถึงไม่ได้ จึงควรทดสอบทรัพยากรที่คุณต้องการจริง ๆ โปรไฟล์ที่ต้องใช้สมาร์ตการ์ด การอนุมัติแบบพุช หรือการลงชื่อเข้าใช้ผ่านเบราว์เซอร์ไม่มีเส้นทางที่ไม่มีคนดูแล และเจ้าของที่เป็นมนุษย์ยังเป็นส่วนหนึ่งของการออกแบบ

บทความที่เกี่ยวข้อง