tôi chạy đoạn mã sau sử dụng PowerShell để có được một danh sách Add/Remove Programs từ registry:Làm cách nào để thêm dòng mới vào đầu ra lệnh trong PowerShell?
Get-ChildItem -path hklm:\software\microsoft\windows\currentversion\uninstall `
| ForEach-Object -Process { Write-Output $_.GetValue("DisplayName") } `
| Out-File addrem.txt
Tôi muốn danh sách để được ngăn cách bởi dòng mới cho mỗi chương trình. Tôi đã thử:
Get-ChildItem -path hklm:\software\microsoft\windows\currentversion\uninstall `
| ForEach-Object -Process { Write-Output $_.GetValue("DisplayName") `n } `
| out-file test.txt
Get-ChildItem -path hklm:\software\microsoft\windows\currentversion\uninstall `
| ForEach-Object {$_.GetValue("DisplayName") } `
| Write-Host -Separator `n
Get-ChildItem -path hklm:\software\microsoft\windows\currentversion\uninstall `
| ForEach-Object -Process { $_.GetValue("DisplayName") } `
| foreach($_) { echo $_ `n }
Nhưng tất cả dẫn đến định dạng lạ khi xuất ra bàn điều khiển và với ba ký tự vuông sau mỗi dòng khi xuất ra tệp. Tôi đã thử Format-List
, Format-Table
và Format-Wide
mà không có may mắn. Ban đầu, tôi nghĩ một cái gì đó như thế này sẽ hoạt động:
Get-ChildItem -path hklm:\software\microsoft\windows\currentversion\uninstall `
| ForEach-Object -Process { "$_.GetValue("DisplayName") `n" }
Nhưng điều đó đã cho tôi một lỗi.
Điều này thực sự hiệu quả. Tuy nhiên, nếu có bất kỳ giá trị nào khác được thêm vào, tức là $ _. GetValue ('InstallDate'), sau đó nó lộn xộn. Nó đáp ứng các câu hỏi ban đầu mặc dù cảm ơn vì sự giúp đỡ. – mike
Tôi đã thêm một câu trả lời thay thế bên dưới mà tôi cho là có thể tốt hơn :) – Jaykul
Hoạt động tuyệt vời. Cẩn thận khi sử dụng 'và không phải '. Trên bàn phím của tôi (bố cục Qwerty bằng tiếng Anh-Mỹ) nằm ở bên trái của 1. –