by willbs at 2013-04-19 08:30:38
i want to comment out some command lines in a group of powershell scripts but the conversion is not happening, i’m sure it has to do with my handling of the # in $newfile3, here is my codeby sstranger at 2013-04-19 13:04:00
$Folder = ‘C:\PowerShell\PS_Star*.*’
$file3 = ‘Invoke-Item $global:OutputReportFile’
$newfile3 = ‘#Invoke-Item $global:OutputReportFile’
Get-ChildItem $Folder | Where {$_ -IS [IO.FileInfo]} |
% {
(Get-Content $.FullName) -replace $file3,$newfile3 | Set-Content $.FullName
Write-Host "Processed: " + $.FullName
}
any ideas?
You have placed the # between the single quotes. PowerShell takes everything between single quotes literrally.by willbs at 2013-04-19 15:19:15
Stefan Stranger [Microsoft]
that’s what i thought too but the code doesn’t perform the remove and replaceby ArtB0514 at 2013-04-22 06:12:52
The use of the single quote marks in your replacement text looks correct to me. Your problem is elsewhere.
To start debugging, I would just process the first file found and break up the pipeline to see which step fails. NOTE: this scriptlet assumes PowerShell V3. (Replace "-File" with "| Where-Object {-not $.PSIsContainter}" for V2)Get-ChildItem $Folder -File | Select-Object -First 1 | Foreach-Object {
$NewContent = (Get-Content $.FullName) -replace $file3,$newfile3
$NewContent | Set-Content "$($.DirectoryName)$($.BaseName).TST"
Write-Host "Processed: " + $.FullName}
This will leave you with a variable ($NewContent) that you can examine, plus the original file and the new file with the extension changed to ".TST" that you can compare. I’d check to see if the -Replace is actually working against the whole file, or if you might need to run it against each line separately.