У меня возникла проблема с функцией -match
в условном заявлении в PowerShell.Powershell -match и weird results
Скажем, у меня есть 3 файла:
test.dll (эта длл имеет [TestClass]
слово в нем)
test1. dll (эта dll имеет TestClass
без скобок)
Test2. длл (эта длл не имеет его вообще)
Я ищу для файлов, которые имеют только [TestClass]
Если я использую следующий код, как test.dll и Test1.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
много кода было предварительно написано, но как-то он ищет DLL. Это похоже на то, что в первом примере он находит TestClass. Но он тянет ЛЮБОЙ «TestClass», а не только «[TestClass]». Я действительно предполагаю, что каким-то образом он может читать текст в dll. –
Я думаю, что это может быть большим решением, чем я думал. Человек, который изначально написал это, читает из dll, что странно для начала. Это как-то находит совпадения в некоторых случаях, хотя это странно. Может быть, случайность, потому что она не должна работать так, как с dll. Это чистое уродство. Так arco444, вы можете быть правы. Вероятно, мне придется переписать этот код. –