Ένα σενάριο που ανοίγει το παράθυρο του VPN και μετά κοιμάται δέκα δευτερόλεπτα μαντεύει, και η μαντεψιά είναι λάθος και προς τις δύο κατευθύνσεις: ξεκινά την αντιγραφή πριν η σήραγγα γίνει χρησιμοποιήσιμη ή περιμένει αφού η εργασία θα μπορούσε να έχει ήδη αρχίσει. Κανένα από τα δύο αποτελέσματα δεν λέει αν ο έλεγχος ταυτότητας τελείωσε. Χρησιμοποιήστε το δικό του αποτέλεσμα της εντολής και μετά κάντε στην υπηρεσία μια ερώτηση που μπορεί πραγματικά να απαντήσει. Η σειρά αυτών των δύο βημάτων είναι όλο το σχέδιο.

Τι αναφέρει πραγματικά η εντολή

Για ένα εγγενές προφίλ Windows που καταλαβαίνει το εγκατεστημένο εργαλείο γραμμής εντολών, το rasdial.exe καλεί μια καταχώριση με όνομα και επιστρέφει κωδικό εξόδου της διεργασίας. Αυτός ο κωδικός περιγράφει την προσπάθεια κλήσης: το μηδέν σημαίνει ότι η σύνδεση δημιουργήθηκε για αυτό το προφίλ και το μη μηδενικό ότι απέτυχε σε στάδιο που υποδεικνύει ο κωδικός. Διαβάστε το ως αποτέλεσμα ενός επιπέδου, όχι της εργασίας.

Το αποτέλεσμα δεν λέει τίποτα για την εκχώρηση διεύθυνσης, το ιδιωτικό DNS, τις προστιθέμενες διαδρομές ή την άδεια να φτάσετε σε συγκεκριμένο διακομιστή. Όλα αυτά συμβαίνουν μετά από επιτυχή κλήση και οποιοδήποτε από αυτά μπορεί ακόμη να είναι λάθος. Αυτό το κενό είναι ο λόγος που ένα εικονίδιο συνδεδεμένου και μια αποτυχημένη αντιγραφή συνυπάρχουν τόσο συχνά.

Καταγράψτε το αποτέλεσμα πριν τρέξει οτιδήποτε άλλο

Ξεκινήστε επιβεβαιώνοντας ότι το προφίλ υπάρχει για τον λογαριασμό που θα εκτελέσει την εργασία, όχι μόνο για τον λογαριασμό με τον οποίο δοκιμάζετε:

Get-VpnConnection -Name "Contoso-Office"
Get-VpnConnection -Name "Contoso-Office" -AllUserConnection

Στη συνέχεια καλέστε και διαβάστε τον κωδικό αμέσως. Το PowerShell κρατά το εγγενές αποτέλεσμα στο $LASTEXITCODE μόνο μέχρι να εκτελεστεί η επόμενη εξωτερική εντολή, οπότε ένα τυχαίο ping ανάμεσα στην κλήση και στον έλεγχο καταστρέφει την τιμή που θέλατε να διαβάσετε. Αναθέστε την πρώτα στη δική σας μεταβλητή και μετά αποφασίστε τι θα κάνετε.

& rasdial.exe "Contoso-Office"
$dial = $LASTEXITCODE
if ($dial -ne 0) { throw "rasdial failed with $dial" }

Καταγράψτε τον κωδικό μαζί με το μη απόρρητο κείμενο σφάλματος, επειδή μια καταχώριση που λείπει, διαπιστευτήρια που απορρίφθηκαν και ένα χρονικό όριο απαιτούν διαφορετικές αντιδράσεις. Ο πίνακας αντιστοιχίζει τα συνήθη αποτελέσματα στο επόμενο βήμα.

ResultWhat it indicatesNext step
0The dial completedProbe the resource, do not start writing yet
691The credential or authentication method was rejectedFix the account or method, do not retry in a loop
623The named entry was not foundFix the profile name or its scope
Other non-zeroTransport, timeout or adapter failureRead the message, then check the path

Ετοιμότητα είναι ο πόρος, όχι η σήραγγα

Μόλις η κλήση πετύχει, δοκιμάστε αυτό που χρειάζεται η εργασία. Ένας κοινόχρηστος πόρος, ένα τελικό σημείο API ή μια θύρα βάσης δεδομένων είναι καλύτερη δοκιμή ετοιμότητας από έναν δημόσιο ιστότοπο, επειδή ένας δημόσιος ιστότοπος απαντά μέσω οποιασδήποτε λειτουργικής διαδρομής και δεν αποδεικνύει τίποτα για την ιδιωτική. Διαλέξτε τη δοκιμή από την οποία εξαρτάται η ίδια η εφαρμογή. Μια επιτυχής σύνδεση TCP σας λέει ότι η δρομολόγηση και το φιλτράρισμα είναι ανοιχτά, και αυτό είναι το μεγαλύτερο μέρος από ό,τι χρειάζεται η πρώτη εγγραφή:

Test-NetConnection -ComputerName files.contoso.example -Port 445

Περιορίστε τις προσπάθειες και καταγράψτε ποιο στάδιο απέτυχε. Τα διαπιστευτήρια που απορρίφθηκαν πρέπει να σταματήσουν το σενάριο αντί να τροφοδοτούν βρόχο επαναλήψεων· ένα όνομα DNS που δεν έχει εμφανιστεί ακόμη αξίζει μερικές σύντομες επαναλήψεις· μια θύρα που δεν ανοίγει ποτέ είναι πρόβλημα δρομολόγησης ή πολιτικής πάνω από τον πελάτη.

Όπου η σύνδεση υπήρχε ήδη πριν ξεκινήσει η εργασία, αφήστε την ήσυχη. Η αποσύνδεση μιας περιόδου σύνδεσης που δεν ανοίξατε διακόπτει την άλλη εργασία του χρήστη, οπότε καταγράψτε σε ποιον ανήκει και ποιος τερματισμός είναι κατάλληλος.

Περιορίστε το προφίλ στον λογαριασμό που εκτελεί την εργασία

Μια προγραμματισμένη εργασία εκτελείται με τη δική της ταυτότητα και περίοδο σύνδεσης, και ένα προφίλ που λειτουργεί στην επιφάνεια εργασίας σας μπορεί να είναι αόρατο εκεί. Επαναλάβετε τον έλεγχο ορατότητας και την κλήση με τον λογαριασμό της εργασίας πριν εμπιστευτείτε το χρονοδιάγραμμα. Κρατήστε τον κωδικό πρόσβασης μακριά από τη γραμμή εντολών: τα ορίσματα είναι ορατά σε άλλες διεργασίες και συχνά καταλήγουν σε αρχεία καταγραφής.

Αν η ανάπτυξη απαιτεί προτροπή προγράμματος περιήγησης, άγγιγμα έξυπνης κάρτας ή έγκριση MFA, αυτή η αλληλεπίδραση είναι μέρος του σχεδίου και δεν μπορεί να αυτοματοποιηθεί με προσομοίωση πλήκτρων. Χρησιμοποιήστε τον υποστηριζόμενο πελάτη για αυτή την περίπτωση και αφήστε το ανθρώπινο βήμα να συμβεί.

Το σχήμα του τελικού σεναρίου παραμένει σύντομο: ελέγξτε το προφίλ, καλέστε, διαβάστε τον κωδικό, ελέγξτε τον πόρο και μετά ξεκινήστε την εργασία. Κάθε βήμα απαντά σε μια ερώτηση που το προηγούμενο δεν μπορούσε, και κανένα από αυτά δεν βασίζεται σε ύπνο.

Σχετικά άρθρα