错误:您必须在“ - ”运算符的右侧提供值表达式

时间:2015-02-15 03:12:58

标签: powershell functional-programming

你可以试试这个:

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

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

1 个答案:

答案 0 :(得分:1)

我不记得-remove是PowerShell运营商,我应该想到你会遇到的错误:

  

意外的令牌' -remove'在表达或陈述中。

此外,您要阻止PowerShell将代码扩展为单引号,因此它被视为文字字符串" $ content [1..14]"。

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

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

1..30 | Set-Content C:\temp\30lines.txt

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

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

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

-Index