Tôi chỉ cần làm việc này và đưa ra những điều sau đây:
$InServerName = 'SomeServerNameorIPAddress'
$InFilePath = '\Sharename\SomePath\'
$InFileName = 'Filename.ext'
$OutServerName = 'SomeServerNameorIPAddress'
$OutFilePath = '\Sharename\SomePath\'
$OutFileName = 'Filename.out'
$InFile = -join('\\',$InServerName,$InFilePath,$InFilename)
$OutFile = -join('\\',$OutServerName,$OutFilePath,$OutFilename)
$FindStr = 'some string to match on'
$CompareStr = [scriptblock]::Create($FindStr)
$CompareStr
Get-Content $InFile | Where-Object {$_ -notmatch $CompareStr} | Set-Content $OutFile
Get-Content $OutFile
Chìa khóa là 'Đối tượng ở đâu' sử dụng khối tập lệnh (được biểu thị bằng dấu ngoặc nhọn) yêu cầu khai báo biến trong sự kiện tạo khối tập lệnh, do đó
$CompareStr = [scriptblock]::Create($FindStr)
hàng.
Bằng cách cấu trúc nó theo cách này, người ta có thể tạo một hàm, truyền cho nó một chuỗi văn bản để khớp một phần, thực hiện việc tạo khối tập lệnh với giá trị được truyền và làm cho nó hoạt động chính xác.
Các câu trả lời ở trên không giải thích chính xác làm thế nào để vượt qua giá trị được thay thế trong một biến.