0

Ich habe ein PowerShell-Skript, wo ich die Anzahl der bestimmten Zeichenfolge aus einer Datei erhalten, dann zum nächsten Schritt gehen oder den nächsten Schritt nur ausführen, wenn die Zeichenfolge 30 ist.Vergleichen Anzahl der Zeichen mit einem konstanten Wert, dann nächste Anweisung ausführen

Ich habe den Code für die Zählung der Zeichenfolge, sowie den Code für die Ausführung des nächsten Schritts. Das einzige, was fehlt, ist if Anweisung zu integrieren.


Um die Anzahl der Zeichenfolge, ich bin mit dem folgenden:

$FileContent = Get-Content "YourFile.txt" 
$Matches = Select-String -InputObject $FileContent -Pattern "/export" -AllMatches 

den nächsten Schritt zu tun, ich bin mit folgend;

"d:/scripts/plink.exe" -ssh %1 -l hpov -pw NDIA123 -m %com%|find "host" >>%lnm% 

Wie if Zustand zwischen beiden oben genannten Codes enthalten, so wird dieser letzte Befehl folgen nur, wenn die Zahl der Zeichenfolge mehr als 30?

+0

Welche Powershell-Version verwenden Sie? Was hat das mit Remoting zu tun? Wo ist Ihr Code, um die Anzahl der Zeichenfolgen zu ermitteln? –

+0

Nicht zu erwähnen, dass der zweite Befehl Batch ist, nicht PowerShell. –

Antwort

0

Dies kann zu einfach sein. Ich habe das Gefühl, dass ich etwas in der Frage übersehen habe.

$FileContent = Get-Content "YourFile.txt" 
$Matches = Select-String -InputObject $FileContent -Pattern "/export" -AllMatches 

if ($Matches -eq 30) { 
    & "d:/scripts/plink.exe" -ssh %1 -l hpov -pw NDIA123 -m %com%|find "host" >>%lnm% 
} 
+0

Hallo Liturgin, ich werde es versuchen, sobald ich Zugang zum System habe. Ich werde dich später über das Ergebnis auf dem Laufenden halten :) – Rock

1

First off, verwenden $Matches nicht für etwas benutzerdefiniert - es ist an automatic variable.

Mit diesem aus dem Weg: da Select-String mehrere Zeilen zurückgeben können, sollten Sie sie nach Länge sortieren und die Länge der längste Test:

$FileContent = Get-Content "YourFile.txt" 
$LongestMatch = Select-String -InputObject $FileContent -Pattern "/export" -AllMatches |Sort-Object {$_.Line.Length} |Select-Object -Last 1 

if($LongestMatch.Line.Length -gt 30){ 
    # We found a match in a string longer than 30 chars! 
    # run plink here! 
} 
+0

Hallo Mathias, ich werde es versuchen, sobald ich Zugang zum System habe. Ich werde dich später über das Ergebnis auf dem Laufenden halten :) – Rock

Verwandte Themen