我在Powershell中有一个脚本,我遇到了一些问题。
$Path = 'C:\Projects\Powershell\TEst'
$MiddleName = 'torres'
CD $Path
Get-ChildItem .\ -filter *PCPLink*| ForEach-Object {
$content = Get-Content $_.FullName |
ForEach-Object {$_ -replace $MiddleName, $MiddleName[0]} |out-file $_.FullName -force
}
这很直接,我遇到的问题是
我需要这个来查找共享文件名过滤器的多个文件,对于每个文件我需要它来吐出一个具有相同名称的文件,并且只截断第一个字符值$MiddleName
。 不是整个文件
但是当我更改脚本以输出$ _。Fullname时,文件为空。我错过了什么?
所以文件看起来像
Torres
Tom
Tony
Tickle
我期待
T
Tom
Tony
Tickle
此脚本的实际输出为空白
DOES 选择我过滤后匹配的两个文件。
答案 0 :(得分:2)
你正在Get-Content
循环播放ForEach
循环,然后转到Out-File
,这一切都很好,但是当你到达Out-File
{时{1}}对象不再代表受影响的文件,它现在是$_
cmdlet中文件的内容。
Get-Content