我在PowerShell中的条件语句-match
功能有问题。PowerShell - 匹配和奇怪的结果
说我有3个文件:
Test.dll的(这个dll有[TestClass]
字在里面)
测试1。 dll(这个dll有TestClass
没有括号)
Test2。 DLL(这个DLL没有它的话)
我正在寻找有文件只[TestClass]
如果我使用下面的代码,无论是Test.dll的,在这种情况Test1.dll工作: (顺便说一句,每个$_
是一个dll)
if ([IO.File]::ReadAllText($_) -match "TestClass")
{
$ProjectTestContainers += $_
Write-Host $ProjectTestContainers
}
这是它应该,但是这不是我想要的。我只想包含[TestClass]
的文件,所以我想这
if ([IO.File]::ReadAllText($_) -match "`[TestClass`]")
{
$ProjectTestContainers += $_
Write-Host $ProjectTestContainers
}
这适用于所有条件,Test.dll的,Test1.dll和Test2.dll,它不应该。它应该只给我Test.dll,因为它是唯一一个包含[TestClass]
任何想法?让我知道你是否需要我更多。
是不是'dll's编译?如果文件是二进制的,你将如何匹配一个字符串? – arco444 2014-10-17 15:30:58
很多代码都是预先写好的,但不知何故它正在搜索dll。它有点作用,因为它在第一个例子中找到了'TestClass'。但它正在拉动任何'TestClass',而不仅仅是'[TestClass]'。我真的假设它以某种方式可以读取dll中的文本。 – 2014-10-17 15:33:27
我认为这可能比我想象的更大。原本写这个的人是从dll读取的,这很奇怪。尽管这在某些情况下找到了匹配,但这很奇怪。可能是一种侥幸,因为它不应该像dll那样工作。这是纯粹的丑陋。所以arco444,你可能是对的。我可能不得不重写这段代码。 – 2014-10-17 16:14:25