2016-09-15 21 views
0

Select-StringとInvoke-Commandを使用して複数のサーバー上のパターンを検索することを考えます。Powershellを使っていくつかのサーバーをリモートで選択する方法

$結果をローカルサーバーに正しく戻すことができず、ファイルやコンソールに出力できません(これはあまり重要ではありません)。私は必要なもの

は、検索の結果を見ることができるようにすることです(ファイル名、行、一致)

Set Execution-Policy RemoteSigned 
$servidores = Get-Content "C:\ServerList.txt" 
(Get-Date).ToString() 

Write-Output "----------------Running script------------------" 
Write-Output "---------------Servers in scope :---------------" 
Write-Output $servidores 
Write-Output "-----------------Starting Loop-----------------" 

$ToExecute = { 
Select-String -SimpleMatch "password" -Path C:\*.* -Exclude C:\Users\Public\resultados.txt 
} 


foreach ($server in $servidores){ 
$result = Invoke-Command -ComputerName $server -ScriptBlock $ToExecute 
Write-Output "----------Executing Search on Server:-----------" 
(Get-Date).ToString();$server; 
Write-Output "------------------------------------------------" 
Write-Output $result 
Out-File $result C:\Users\Public\resultados.txt 
} 
+0

あなたはここでは2つの別々の質問があります。あなたはそれらの1つを選んでそれに焦点を当てるべきです。誰かが答える方法を知っているかもしれませんが、どちらにも答えたくないかもしれません。質問は単一で明確に定義されるべきです。 – Matt

+0

申し訳ありません - アドバイスいただきありがとうございます - 私はそれを修正します。 –

+0

質問のコードを更新しないでください。それは読者がそれが何が起こっているかを理解することが難しくなります。 – Matt

答えて

2

アウトファイルのあなたが配管されていない場合、あなたは-inputobjectを使用する必要がありますフラグ。 Out-File does not take the inputobject by position.

Out-File -InputObject $result -path C:\Users\Public\resultados.txt 

ので、そうしないとあなたは、ライト出力/ OUTFILEを交換するティー・オブジェクトを使用することができます。

$result | Tee -filepath C:\Users\Public\resultados.txt 
0
Set Execution-Policy RemoteSigned 
$servidores = Get-Content "C:\ServerList.txt" 
Write-Output ("----------------Running script-----"+(Get-Date).ToString()+"-- -----------") 
Write-Output "--------------------------Servers in scope----------------------------" 
Write-Output $servidores 
foreach ($server in $servidores){ 
Write-Output ("---Executing Search on Server:---"+$server+"----at:"+(Get- Date).ToString()+"-------------") 
$result= Invoke-Command -ComputerName $server -ScriptBlock {Select-String - Pattern "password" -Path C:\*.txt -AllMatches} 
if ($result -ne $null){ 
Write-Output $result.ToString() 
} 
}Read-Host -Prompt "Press Enter to exit" 
+0

より良い質問をしようとすると、それは1つの結果のためにのみ機能します。 –

関連する問題