Я пытаюсь использовать переменную в select-string -pattern
, но ничего не возвращает. Если я копирую и вставляю содержимое переменной в синтаксис, он работает.Select-String -pattern не принимает переменную
У меня есть несколько хэшей, которые я ранее записывал, и хочу снова получить хэши одного и того же каталога и посмотреть, являются ли они теми же, что были записаны ранее, поэтому я пытаюсь использовать select-string.
Используется для получения исходных хэшей:
$data2hash = "C:\users\blue\Desktop\*.txt"
$hash = Get-FileHash $data2hash -Algorithm md5
$h_hash = $hash.hash
PS C:\Users> get-filehash c:\users\bob\desktop\* -Algorithm md5 | export-csv c:\users\bob\desktop\hashes.csv
Algorithm Hash Path
--------- ---- ----
MD5 E081EAAA07EC3CBC71DBC374E85B3031 c:\users\bob\desktop\1.txt
MD5 78D85AB09077BA9BE641C5AFC1EDFEE9 c:\users\bob\desktop\2.txt
MD5 69B8789ED87248AB5B69C0421ADF6E54 c:\users\bob\desktop\3.txt
MD5 34DF279CA08B79238246787321939C60 c:\users\bob\desktop\4.txt
Проверка фазы
$db = 'C:\users\bob\Desktop\hashes.csv'
$db2 = Get-Content $db
$some_data = "C:\users\bob\Desktop\*"
$new_hashes = Get-FileHash $data2hash -Algorithm md5
$h_hashes = $hash.hash
foreach($h in $h_hash)
{
$format_hash = "'" + $h + "',"
$d += $format_hash
}
$d = $d.substring(0,$d.length-1)
PS C:\Users\bob\desktop> $d.GetType()
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True String System.Object
$db2 | select-string -pattern $d
Желаемый результат:
PS C:\Users> $db2 | select-string -pattern $d
"MD5","3C535413A18289E8CEEF69ED15479515","C:\users\blue\Desktop\computers.txt"
"MD5","60E6B4CF0E9A1E99E5861ECE1001DB3D","C:\users\blue\Desktop\filecheck.txt"
"MD5","BC36FF295E4A68EE9C8E04B1D833E836","C:\users\blue\Desktop\FilesCheck_02-08-14.txt
'$ D = " 'ASD', "FGH" 'не то же самое, как' $ D = «ASD ',' fgh''. – PetSerAl
YOu сравнивает [system.object] с [system.array]. –