You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在远程服务器文件夹的文件中查找文本?PowerShell脚本问题

解决远程PowerShell执行Select-String的路径解析错误

嘿,这个问题我之前也碰到过!你遇到的TerminatorExpectedAtEndOfString解析错误,核心原因是远程PowerShell会话处理路径字符串时,把反斜杠当成了转义字符,导致字符串无法正确闭合。你的远程文件夹路径语法本身是对的,但在远程执行场景下需要调整写法,下面给你几种可靠的解决办法:

方法1:用单引号包裹路径(最推荐)

PowerShell里的单引号是「原样字符串」,不会解析里面的转义字符或变量,完美适配远程场景。修改后的命令如下:

# 通过本地Invoke-Command远程执行的写法
Invoke-Command -ComputerName ServerName -ScriptBlock {
    Select-String -Pattern "TextToFind" -Path '\\ServerName\C$\Folder_I\Folder_II\*.txt'
}

顺便提一句:如果目标文件就在远程机器的本地C盘里,其实可以直接用本地路径,不用走网络共享,更高效:

Invoke-Command -ComputerName ServerName -ScriptBlock {
    Select-String -Pattern "TextToFind" -Path 'C:\Folder_I\Folder_II\*.txt'
}

方法2:转义路径中的反斜杠

如果你坚持要用双引号,就把每个反斜杠改成两个(\\),明确告诉PowerShell这是普通的路径分隔符,不是转义符:

Invoke-Command -ComputerName ServerName -ScriptBlock {
    Select-String -Pattern "TextToFind" -Path "\\ServerName\C$\Folder_I\Folder_II\*.txt"
}

方法3:用Join-Path构建路径(最安全)

用PowerShell内置的Join-Path命令拼接路径,完全不用手动处理转义问题,可读性和安全性都拉满:

Invoke-Command -ComputerName ServerName -ScriptBlock {
    $basePath = '\\ServerName\C$'
    $targetFiles = Join-Path -Path $basePath -ChildPath 'Folder_I\Folder_II\*.txt'
    Select-String -Pattern "TextToFind" -Path $targetFiles
}

如果是你直接在远程机器的PowerShell窗口里运行命令,那大概率是没给路径加引号——哪怕路径里没有空格,加引号也能避免很多解析坑哦!

内容的提问来源于stack exchange,提问作者ulisses

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 09:42:34