0

我有一個PowerShell腳本,我從文件中獲得某個字符串的計數,然後轉到下一步或僅在字符串數爲30時執行下一步。比較字符數與一個常數值,然後執行下一條語句

我的確有用於獲取字符串計數的代碼,以及用於執行下一步的代碼。唯一缺少的是加入if聲明。


要獲得字符串的數量,我使用以下內容:

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

要做到下一步,我使用以下;

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

如何在包括上面之間兩個代碼if條件,使最後的命令會隨之而來,只有在字符串的數量是大於30?

+0

哪些PowerShell的版本您使用的?這與遠程處理有什麼關係?你的代碼在哪裏得到字符串的數量? –

+0

更不用說第二個命令是批處理,而不是PowerShell。 –

回答

0

這可能太簡單了。我覺得在這個問題上我一定錯過了一些東西。

$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

嗨Liturgist,一旦我進入系統,我會試一試。我會稍後更新你的結果:) – Rock

1

首先,沒有任何東西使用$Matches用戶定義的 - 這是an automatic variable

有了這樣的方式:因爲Select-String可能返回多個行,你應該長對它們進行排序和測試最長長度:

$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

嗨Mathias,一旦我有權訪問系統,我會試一試。我會在以後的結果中更新你的結果:) – Rock

相關問題