比较字符数与一个常数值,然后执行下一条语句

问题描述:

我有一个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。 –

这可能太简单了。我觉得在这个问题上我一定错过了一些东西。

$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

首先,没有任何东西使用$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