Я использую командный файл для написания скрипта Powershell. Я понимаю, что это не самый предпочтительный метод, когда все это можно написать в Powershell, но я здесь.
В скрипте Powershell есть строка, которая должна перенаправлять соответствующий текст в выходной файл. Однако, поскольку я «пишу» сценарий Powershell из командного файла, я пытаюсь перенаправить строку, содержащую перенаправление, в сценарий.
Вот пример кода из пакетного файла:
Echo CLS >> Path\to\PowerShell\Script\example.ps1
Echo Echo "Please wait while we compare files" >> Path\to\PowerShell\Script\example.ps1
Echo Echo " " >> Path\to\PowerShell\Script\example.ps1
Echo $file1 = (Get-Content -Path Path\to\Footprint\File\footprint) >> Path\to\PowerShell\Script\example.ps1
Echo :sig ForEach ($Foot In $file1) >> Path\to\PowerShell\Script\example.ps1
Echo { >> Path\to\PowerShell\Script\example.ps1
Echo $Logfile = (Get-Content -Path Path\to\Log\File\Log.log) >> Path\to\PowerShell\Script\example.ps1
Echo :log ForEach ($Line In $Logfile) >> Path\to\PowerShell\Script\example.ps1
Echo { >> Path\to\PowerShell\Script\example.ps1
Echo If (($Line -match $Foot)) >> Path\to\PowerShell\Script\example.ps1
Echo { >> Path\to\PowerShell\Script\example.ps1
Echo ECHO $Line >> Path\to\Output\File\Match.txt >> Path\to\PowerShell\Script\example.ps1
Echo ECHO "We have found a match!" >> Path\to\PowerShell\Script\example.ps1
Echo break log >> Path\to\PowerShell\Script\example.ps1
Echo } >> Path\to\PowerShell\Script\example.ps1
Echo } >> Path\to\PowerShell\Script\example.ps1
Echo } >> Path\to\PowerShell\Script\example.ps1
Echo Pause >> Path\to\PowerShell\Script\example.ps1
Разрывается на этой строке:
Echo ECHO $Line >> Path\to\Output\File\Match.txt >> Path\to\PowerShell\Script\example.ps1
Вот результирующий скрипт Powershell:
CLS
Echo "Please wait while we compare files"
Echo " "
$file1 = (Get-Content -Path Path\to\Footprint\File\footprint)
:sig ForEach ($Foot In $file1)
{
$Logfile = (Get-Content -Path Path\to\Log\File\Log.log)
:log ForEach ($Line In $Logfile)
{
If (($Line -match $Foot))
{
ECHO $Line
ECHO "We have found a match"
break log
}
}
}
Pause
Я пытался процитировать эту строку двойными и одинарными кавычками и пытался избежать перенаправлений, но безуспешно. Чего мне не хватает?