Error: You must provide a value expression on the right hand side of the '-' operator

Error: You must provide a value expression on the right hand side of the '-' operator

你可以试试这个:

function setConfig( $file) {
    $content = Get-Content $file
    $content -remove '$content[1..14]'
    Set-Content $file     
}

我想创建一个函数,通过它我可以传递文件,以便它删除特定的行或一堆行

我不记得 -remove 是 PowerShell 操作员,我认为你会遇到的错误是:

Unexpected token '-remove' in expression or statement.

您还阻止 PowerShell 扩展单引号中的代码,因此它被视为文字字符串“$content[1..14]”。

我冒昧地假设您正在尝试从文件中删除前 14 行代码,同时保留第一行是?

我使用以下代码创建了一个包含 30 行的测试文件。

1..30 | Set-Content C:\templines.txt

然后我们使用您函数的这个更新版本

function setConfig($file){
    $content = Get-Content $file
    $content | Select-Object -Index (,0 + (14..$($content.Count))) | Set-Content $file     
}

使用 Select-Object-Index 我们得到第一行 ,0 然后在第 14 行 (14..$($content.Count))) 之后添加剩余的行。 0 的 from 中需要逗号,因为我们要组合两个数字数组。更新后的文件内容如下所示。更改 -Index 值以满足您的需要。

1
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30