获取内容管道到 Select 字符串并检索 ComputerName
Get-content Pipe to Select String and retrieve ComputerName
我正在尝试编写一个脚本,我可以查看远程服务器列表,搜索特定文件类型。然后,如果文件包含某个字符串,我想知道那是什么文件以及在什么计算机上。
我从基础开始,但是当我执行 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 }
我希望能够 Select FileName、Pscomputername 和 Select-String。
我发现打破管道更容易。我已成功测试此代码:
$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
}
我正在尝试编写一个脚本,我可以查看远程服务器列表,搜索特定文件类型。然后,如果文件包含某个字符串,我想知道那是什么文件以及在什么计算机上。
我从基础开始,但是当我执行 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 }
我希望能够 Select FileName、Pscomputername 和 Select-String。
我发现打破管道更容易。我已成功测试此代码:
$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
}