gpt4 book ai didi

powershell - 嵌套powershell的问题

转载 作者:行者123 更新时间:2023-12-03 16:41:22 25 4
gpt4 key购买 nike

我有这个代码片段,我尝试在目录的所有文件中替换一些字符串。我以为我可以将 foreach 嵌套在 ForEach-Object 中,但这似乎不起作用。

我得到的错误是:

InvalidArgument: (:) [ForEach-Object], ParameterBindingException


$files = Get-ChildItem $testdir\reference *.* -recurse
$replacementMap = @{"Fruit::Apple" = "NewApple";"Fruit::Banana" = "NewBanana"}

foreach ($file in $files)
{
If (Get-Content $($file.FullName) | Select-String -Pattern "Fruit::")
{
$content = Get-Content $($file.FullName) | ForEach-Object
{
$line = $_
foreach ($entry in $replacementMap.GetEnumerator())
{
$line -replace $($entry.Name),$($entry.Value)
}
}
$content = $content -join "`r`n"
$content | Set-Content $($file.FullName)
}

此代码在没有
foreach ($entry in $replacementMap.GetEnumerator())
{
$line -replace $($entry.Name),$($entry.Value)
}

部分。任何人都知道我做错了什么?提前致谢

最佳答案

您错过了 foreach 对象上的花括号闭合和格式问题。您需要以不同的方式处理 foreach 和 foreach-object:

用这个替换你现有的 foreach 部分:

foreach ($file in $files)
{
If(Get-Content $($file.FullName) | Select-String -Pattern "Fruit::")
{
$content = Get-Content $($file.FullName) | %{
$line = $_
foreach ($entry in $replacementMap.GetEnumerator())
{
$line -replace $($entry.Name),$($entry.Value)
}
}
$content = $content -join "`r`n"
$content | Set-Content $($file.FullName)
}
}

关于powershell - 嵌套powershell的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46171727/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com