【发布时间】:2016-06-18 09:23:27
【问题描述】:
我有一个使用 kpscript 从 keepass 数据库中检索信息的命令。 此命令可能检索 1 行,多行无,但最终,它总是返回此输出:
OK: Operation completed successfully.
如果 StartsWith("OK:") 使用 PowerShell 单独处理每一行并退出循环的最佳方法是什么: 示例:
KPScript -c:GetEntryString $PASSHOME\$PASSFILE -pw:$PASS -Field:UserName $SEARCH
Administrator
OK: Operation completed successfully.
我尝试过的以下方法均未成功
$UNAME = KPScript -c:GetEntryString $PASSHOME\$PASSFILE -pw:$PASS -Field:UserName $SEARCH
IF(! $UNAME){
write-host "UNAME1=$UNAME"
write-host "ERROR UNAME" -foreground "red"
exit
}
和
while (! $UNAME) { KPScript -c:GetEntryString $PASSHOME\$PASSFILE -pw:$PASS -Field:UserName $SEARCH }
同样失败
$UNAME=KPScript -c:GetEntryString $PASSHOME\$PASSFILE -pw:$PASS -Field:UserName $SEARCH
write-host "UNAME=$UNAME"
结果:
UNAME=Administrator OK: Operation completed successfully.
重点是: UNAME=管理员 UNAME=OK:操作成功完成。 所以每一行都可以单独处理
也许这可以通过数组来完成?
同样失败
$UNAME=@(KPScript -c:GetEntryString $PASSHOME\$PASSFILE -pw:$PASS -Field:UserName $SEARCH)
write-host "UNAME=$UNAME"
输出是一样的:
UNAME=Administrator OK: Operation completed successfully.
【问题讨论】:
-
你有没有尝试过?你已经有了一个想法。您熟悉 PowerShell 和管道上的循环吗?
-
其实我已经尝试了很多东西:while、for、foreach,但是我看不到我想要的结果,这就是我寻求帮助的原因。我最终需要的是根据数据单独处理每一行
-
太棒了。我感谢你的努力。可以在这里展示一下吗?
-
因为我做了这么多测试,但没有一个能正常工作,我不再有测试了,对不起...
-
我会重新创建它们,没问题:)
标签: powershell keepass