获取内容管道以选择字符串并检索ComputerName

时间:2016-07-26 20:26:40

标签: powershell powershell-remoting

我正在尝试编写一个脚本,我可以查看远程服务器列表,搜索某种文件类型。然后,如果文件包含某个字符串,我想知道哪个文件是什么,在哪台计算机上。

我从基础知识开始,但是当我做Select-String时,我无法检索文件,也无法找到计算机名称,它只输出与我脚本中相同的字符串。

我确定我遗漏了一些基本的东西,但是这里的任何建议都将非常感激。

$servers = ArrayofServers

    ForEach ($server in $Servers){ 
                invoke-command -computername $server {Get-ChildItem "D:\Folder\Location\Windows\" -Include *.txt -Recurse |

                Get-Content | 

                Select-String 'String to Select' | 

                Out-String 

    } -Credential $credential }

我希望能够选择FileName,Pscomputername和Select-String。

1 个答案:

答案 0 :(得分:1)

我发现打破管道更容易。我已经成功测试了这段代码:

$Servers = @("ArrayofServers")
foreach ($Server in $Servers)
{ 
    Invoke-Command -ComputerName $Server -ScriptBlock {
        $Results = $false
        $SearchResults = Get-ChildItem "D:\Folder\Location\Windows\" -Include *.txt -Recurse 
        foreach ($SearchResult in $SearchResults)
        {
            If ($SearchResult | Get-Content | Select-String 'String to Select')
            {
                $SearchResult.FullName
                $SearchResult | Get-Content
                $Results = $true
            }
        }
        If ($Results)
        {
            $env:COMPUTERNAME
        }
    } -Credential $Credential 
}