0
votes

PowerShell - Vérifiez si le fichier existe et contient le modèle de chaîne

a écrit cette petite partie du code pour vérifier si le fichier existe et contient le modèle de chaîne xxx

mais, il ne fait pas de quoi il devrait. Tout d'abord, il reconnaît partiellement que le chemin existant et deuxièmement, il reconnaît partiellement le modèle dans le fichier TXT. Pouvez-vous m'aider s'il vous plaît?

Je soupçonne que Patter est partiellement reconnaissable sur le serveur multiplier. (Espaces blancs, etc.), même comment sauter cela?

Etrange pense que cela ne voit pas que le motif ne voit pas que le modèle est manquant dans le fichier , ça retourne Notinscope à la place vérifie Ci-dessous fichier sans ce motif

 Entrez la description de l'image ici

et ci-dessous, vous pouvez voir le motif normal

 Entrez la description de l'image Ici


0 commentaires

4 Réponses :


0
votes

Concernant le -Path de la cmdlet Select-String, vous devez mettre la valeur entre "": xxx

EDIT

Ceci devrait faire le truc: xxx


4 commentaires

Etrange pense que cela ne se trouve pas que le modèle est manquant dans le fichier, il renvoie à la place NotScope.


Qu'est-ce que compare_result.txt contient? Vous recherchez actuellement la chaîne "Aucune différence rencontrée" dans votre fichier texte, c'est ce que vous voulez faire? Une fois que votre cmdlet Select-String $ SEL ne contient que des lignes contenant cette chaîne, la cmdlet de test de test est donc peu probable.


Alors, que dois-je faire à la place de test-chemin?


J'ai édité ma réponse pour prendre en compte ce que vous m'avez dit. Est-ce que ça fait ce que tu veux?



0
votes

S'il vous plaît essayez comme ci-dessous: XXX


1 commentaires

Semble étrange ... quel est ce $ selget?



0
votes
try
{
    $SEL = $null
    $SEL = Select-String -Path \\$serversPing\c$\Scripts\compare_result.txt -Pattern "no differences encountered" -ErrorAction Stop
    if ($SEL)
    {
        $SoftCheckResult = "ok"
    }
    else
    {
        $SoftCheckResult = "Verify"
    }
}
catch
{
    $ErrorMessage = $_.Exception.Message
    $FailedItem = $_.Exception.ItemName
    $SoftCheckResult = "NotInScope"
}
return $softCheckResult 

0 commentaires

2
votes

Puisque vous utilisez pluriel dans $ server , je suppose que cette variable provient d'une partie antérieure de votre code et contient une collection de serveurs.

Je changerais l'ordre des chèques et commencerais avec Un test pour voir si le fichier existe sur ce serveur ou non: xxx

J'ai ajouté un Connexion de test dans la boucle de Foreach pour la première fois si Le serveur est en ligne ou non. Si vous avez vérifié cela avant et que la variable € / Code> ne contient que des serveurs en ligne et accessibles, vous pouvez ignorer cela.


0 commentaires