2017-01-26 176 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 
    } 
} 

文本文件包含這樣

\\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

請出示一個具體的例子 - 通過直接更新你的問題 - 信息要寫入到目標文件:是,比如,'\ \計算機11-1004S10 \ C $ \ü 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是看到有人改變了文本文件的內容,所以每一行開始\\而不是\,因此在這種情況下請使用索引[2]和[5]而不是[1]和[4] – paul543

+1

謝謝。必須弄清楚如何投射到一個字符串。但得到它與此工作。 –

2

如果拆分的循環分爲兩個foreach迴路,一個用於計算機和用戶目錄會更容易輸出信息用戶目錄的名稱。

$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