比较字符数与一个常数值,然后执行下一条语句
我有一个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?
这可能太简单了。我觉得在这个问题上我一定错过了一些东西。
$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%
}
嗨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!
}
嗨Mathias,一旦我有权访问系统,我会试一试。我会在以后的结果中更新你的结果:) – Rock
哪些PowerShell的版本您使用的?这与远程处理有什么关系?你的代码在哪里得到字符串的数量? –
更不用说第二个命令是批处理,而不是PowerShell。 –