ฉันแค่ต้องการทำงานนี้และทำสิ่งต่อไปนี้:
$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
กุญแจสำคัญคือ 'Where-Object' ที่ใช้บล็อกสคริปต์ (ดังแสดงด้วยเครื่องหมายปีกกา) ต้องประกาศตัวแปรในเหตุการณ์การสร้างบล็อกสคริปต์ดังนั้น
$CompareStr = [scriptblock]::Create($FindStr)
ไลน์.
ด้วยการจัดโครงสร้างด้วยวิธีนี้เราสามารถสร้างฟังก์ชั่นส่งผ่านสตริงข้อความเพื่อจับคู่บางส่วนดำเนินการสร้างบล็อกสคริปต์ด้วยค่าที่ส่งผ่านและทำให้มันทำงานอย่างถูกต้อง
คำตอบข้างต้นไม่ถูกต้องอธิบายวิธีส่งผ่านค่าที่จะถูกแทนที่ภายในตัวแปร