2017-01-26 10 views
1

私は、ユーザAppDataフォルダ内の特定のフォルダをスキャンするスクリプトを持っています。フォルダが見つかると、txtファイルへのパスを返します。それで、見つかったコンピュータ名とユーザー名がわかります。Powershellの出力フォーマット?

実際にテキストファイルに書かれたものをフォーマットすることができます。そのため、コンピュータ名とユーザー名以外のパスからすべてを削除します。

スクリプト:

foreach($computer in $computers){ 
    $BetterNet = "\\$computer\c$\users\*\AppData\Local\Google\Chrome\User Data\Default\Extensions\gjknjjomckknofjidppipffbpoekiipm" 
    Get-ChildItem $BetterNet | ForEach-Object { 
     $count++ 
     $betternetCount++ 
     write-host BetterNet found on: $computer 
     Add-Content "\\SERVERNAME\PowershellScans\$date\$time\BetterNet.txt" $_`n 
     write-host 
    } 
} 

テキストファイルを使用すると、2つのforeachループ、コンピュータとユーザーのディレクトリに1つにあなたのループを分割する場合は、出力に容易になるだろう。この

\\computer-11-1004S10\c$\users\turtle\AppData\Local\Google\Chrome\User Data\Default\Extensions\gjknjjomckknofjidppipffbpoekiipm 

\\computer-1004-24S\c$\users\camel\AppData\Local\Google\Chrome\User Data\Default\Extensions\gjknjjomckknofjidppipffbpoekiipm 

\\computer-1004-23S\c$\users\rabbit\AppData\Local\Google\Chrome\User Data\Default\Extensions\gjknjjomckknofjidppipffbpoekiipm 
+0

ターゲットファイルに書き込む情報の具体的な例を表示してください: '\ \ computer-11-1004S10 \ c $ \ u sers \ turtle」、または「computer-11-1004S10 turtle」などの、 – mklement0

答えて

2

$string_containing_path分割の方法を使用して分割して、インデックスを追加するのは簡単である(1)及び(4)あなたが必要とする:

$afterSplit = $string_containing_path.Split('\') 

$stringThatYouNeed = $afterSplit[1] + " " + $afterSplit[4] 

現在のログを修正する簡単なスクリプトを使用することもできます:

$path_in = "C:\temp\list.txt" 
$path_out= "C:\temp\output.txt" 

$reader = [System.IO.File]::OpenText($path_in) 


try { 

    while($true){ 

     $line = $reader.ReadLine() 

     if ($line -eq $null) { break } 

     $line_after_split_method = $line.Split('\') 

     $stringToOutput = $line_after_split_method[1] + " " + $line_after_split_method[4] + "`r`n" 

     add-content $path_out $stringToOutput 
    } 

    add-content $path_out "End" 

} 

finally { 

$reader.Close() 

} 
+0

@Joe Clarkは誰かがテキストファイルの内容を変更して、各行が\の代わりに\\で始まるように見えます。この場合、[1]と[4]の代わりにインデックス[2]と[5]を使用してください。 – paul543

+1

ありがとうございます。文字列にキャストする方法を理解しなければならなかった。しかし、これでこれを動作させました。 –

2

のような情報が含まれていますユーザーディレクトリの名前。あなたは文字列の形式で各ラインを持っている場合は

$output = foreach($computer in $computers){ 

    $UserDirectories = Get-ChildItem "\\$computer\c$\users\" -Directory 
    foreach ($Directory in $UserDirectories) { 
     $BetterNet = Get-ChildItem (Join-Path $Directory.fullname "\AppData\Local\Google\Chrome\User Data\Default\Extensions\gjknjjomckknofjidppipffbpoekiipm") 
     Add-Content "\\SERVERNAME\PowershellScans\$date\$time\BetterNet.txt" "$computer $($Directory.name)`r`n" 
     write-host BetterNet found on: $computer 
     $BetterNet 
    } 
} 
$output.count 
関連する問題