Как добавить новую строку в вывод команды в PowerShell?

StackOverflow https://stackoverflow.com/questions/1639291

  •  08-07-2019
  •  | 
  •  

Вопрос

Я запускаю следующий код с помощью PowerShell, чтобы получить список добавления / удаления программ из реестра:

Get-ChildItem -path hklm:\software\microsoft\windows\currentversion\uninstall `
    | ForEach-Object -Process { Write-Output 

Я запускаю следующий код с помощью PowerShell, чтобы получить список добавления / удаления программ из реестра:

Get-ChildItem -path hklm:\software\microsoft\windows\currentversion\uninstall `
    | ForEach-Object -Process { Write-Output 

Я запускаю следующий код с помощью PowerShell, чтобы получить список добавления / удаления программ из реестра:

Get-ChildItem -path hklm:\software\microsoft\windows\currentversion\uninstall `
    | ForEach-Object -Process { Write-Output 

Я запускаю следующий код с помощью PowerShell, чтобы получить список добавления / удаления программ из реестра:

Get-ChildItem -path hklm:\software\microsoft\windows\currentversion\uninstall `
    | ForEach-Object -Process { "

Я запускаю следующий код с помощью PowerShell, чтобы получить список добавления / удаления программ из реестра:

Get-ChildItem -path hklm:\software\microsoft\windows\currentversion\uninstall `
    | ForEach-Object -Process { Write-Output 

Я запускаю следующий код с помощью PowerShell, чтобы получить список добавления / удаления программ из реестра:

Get-ChildItem -path hklm:\software\microsoft\windows\currentversion\uninstall `
    | ForEach-Object -Process { Write-Output 

Я запускаю следующий код с помощью PowerShell, чтобы получить список добавления / удаления программ из реестра:

Get-ChildItem -path hklm:\software\microsoft\windows\currentversion\uninstall `
    | ForEach-Object -Process { Write-Output 

Я запускаю следующий код с помощью PowerShell, чтобы получить список добавления / удаления программ из реестра:

<*>

Я хочу, чтобы список был разделен символами новой строки для каждой программы. Я пробовал:

<*>

Но все это приводит к странному форматированию при выводе на консоль и с тремя квадратными символами после каждой строки при выводе в файл. Я попытался Format-List , Format-Table и Format-Wide , но безуспешно. Первоначально я думал, что-то вроде этого будет работать:

<*>

Но это только что дало мне ошибку.

.GetValue("DisplayName") } ` | Out-File addrem.txt

Я хочу, чтобы список был разделен символами новой строки для каждой программы. Я пробовал:

<*>

Но все это приводит к странному форматированию при выводе на консоль и с тремя квадратными символами после каждой строки при выводе в файл. Я попытался Format-List , Format-Table и Format-Wide , но безуспешно. Первоначально я думал, что-то вроде этого будет работать:

<*>

Но это только что дало мне ошибку.

.GetValue("DisplayName") `n } ` | out-file test.txt Get-ChildItem -path hklm:\software\microsoft\windows\currentversion\uninstall ` | ForEach-Object {

Я запускаю следующий код с помощью PowerShell, чтобы получить список добавления / удаления программ из реестра:

Get-ChildItem -path hklm:\software\microsoft\windows\currentversion\uninstall `
    | ForEach-Object -Process { Write-Output 

Я запускаю следующий код с помощью PowerShell, чтобы получить список добавления / удаления программ из реестра:

<*>

Я хочу, чтобы список был разделен символами новой строки для каждой программы. Я пробовал:

<*>

Но все это приводит к странному форматированию при выводе на консоль и с тремя квадратными символами после каждой строки при выводе в файл. Я попытался Format-List , Format-Table и Format-Wide , но безуспешно. Первоначально я думал, что-то вроде этого будет работать:

<*>

Но это только что дало мне ошибку.

.GetValue("DisplayName") } ` | Out-File addrem.txt

Я хочу, чтобы список был разделен символами новой строки для каждой программы. Я пробовал:

<*>

Но все это приводит к странному форматированию при выводе на консоль и с тремя квадратными символами после каждой строки при выводе в файл. Я попытался Format-List , Format-Table и Format-Wide , но безуспешно. Первоначально я думал, что-то вроде этого будет работать:

<*>

Но это только что дало мне ошибку.

.GetValue("DisplayName") } ` | Write-Host -Separator `n Get-ChildItem -path hklm:\software\microsoft\windows\currentversion\uninstall ` | ForEach-Object -Process {

Я запускаю следующий код с помощью PowerShell, чтобы получить список добавления / удаления программ из реестра:

Get-ChildItem -path hklm:\software\microsoft\windows\currentversion\uninstall `
    | ForEach-Object -Process { Write-Output 

Я запускаю следующий код с помощью PowerShell, чтобы получить список добавления / удаления программ из реестра:

<*>

Я хочу, чтобы список был разделен символами новой строки для каждой программы. Я пробовал:

<*>

Но все это приводит к странному форматированию при выводе на консоль и с тремя квадратными символами после каждой строки при выводе в файл. Я попытался Format-List , Format-Table и Format-Wide , но безуспешно. Первоначально я думал, что-то вроде этого будет работать:

<*>

Но это только что дало мне ошибку.

.GetValue("DisplayName") } ` | Out-File addrem.txt

Я хочу, чтобы список был разделен символами новой строки для каждой программы. Я пробовал:

<*>

Но все это приводит к странному форматированию при выводе на консоль и с тремя квадратными символами после каждой строки при выводе в файл. Я попытался Format-List , Format-Table и Format-Wide , но безуспешно. Первоначально я думал, что-то вроде этого будет работать:

<*>

Но это только что дало мне ошибку.

.GetValue("DisplayName") } ` | foreach(

Я запускаю следующий код с помощью PowerShell, чтобы получить список добавления / удаления программ из реестра:

Get-ChildItem -path hklm:\software\microsoft\windows\currentversion\uninstall `
    | ForEach-Object -Process { Write-Output 

Я запускаю следующий код с помощью PowerShell, чтобы получить список добавления / удаления программ из реестра:

<*>

Я хочу, чтобы список был разделен символами новой строки для каждой программы. Я пробовал:

<*>

Но все это приводит к странному форматированию при выводе на консоль и с тремя квадратными символами после каждой строки при выводе в файл. Я попытался Format-List , Format-Table и Format-Wide , но безуспешно. Первоначально я думал, что-то вроде этого будет работать:

<*>

Но это только что дало мне ошибку.

.GetValue("DisplayName") } ` | Out-File addrem.txt

Я хочу, чтобы список был разделен символами новой строки для каждой программы. Я пробовал:

<*>

Но все это приводит к странному форматированию при выводе на консоль и с тремя квадратными символами после каждой строки при выводе в файл. Я попытался Format-List , Format-Table и Format-Wide , но безуспешно. Первоначально я думал, что-то вроде этого будет работать:

<*>

Но это только что дало мне ошибку.

) { echo

Я запускаю следующий код с помощью PowerShell, чтобы получить список добавления / удаления программ из реестра:

Get-ChildItem -path hklm:\software\microsoft\windows\currentversion\uninstall `
    | ForEach-Object -Process { Write-Output 

Я запускаю следующий код с помощью PowerShell, чтобы получить список добавления / удаления программ из реестра:

<*>

Я хочу, чтобы список был разделен символами новой строки для каждой программы. Я пробовал:

<*>

Но все это приводит к странному форматированию при выводе на консоль и с тремя квадратными символами после каждой строки при выводе в файл. Я попытался Format-List , Format-Table и Format-Wide , но безуспешно. Первоначально я думал, что-то вроде этого будет работать:

<*>

Но это только что дало мне ошибку.

.GetValue("DisplayName") } ` | Out-File addrem.txt

Я хочу, чтобы список был разделен символами новой строки для каждой программы. Я пробовал:

<*>

Но все это приводит к странному форматированию при выводе на консоль и с тремя квадратными символами после каждой строки при выводе в файл. Я попытался Format-List , Format-Table и Format-Wide , но безуспешно. Первоначально я думал, что-то вроде этого будет работать:

<*>

Но это только что дало мне ошибку.

`n }

Я хочу, чтобы список был разделен символами новой строки для каждой программы. Я пробовал:

<*>

Но все это приводит к странному форматированию при выводе на консоль и с тремя квадратными символами после каждой строки при выводе в файл. Я попытался Format-List , Format-Table и Format-Wide , но безуспешно. Первоначально я думал, что-то вроде этого будет работать:

<*>

Но это только что дало мне ошибку.

.GetValue("DisplayName") } ` | Out-File addrem.txt

Я хочу, чтобы список был разделен символами новой строки для каждой программы. Я пробовал:

<*>

Но все это приводит к странному форматированию при выводе на консоль и с тремя квадратными символами после каждой строки при выводе в файл. Я попытался Format-List , Format-Table и Format-Wide , но безуспешно. Первоначально я думал, что-то вроде этого будет работать:

<*>

Но это только что дало мне ошибку.

.GetValue("DisplayName") `n" }

Я хочу, чтобы список был разделен символами новой строки для каждой программы. Я пробовал:

<*>

Но все это приводит к странному форматированию при выводе на консоль и с тремя квадратными символами после каждой строки при выводе в файл. Я попытался Format-List , Format-Table и Format-Wide , но безуспешно. Первоначально я думал, что-то вроде этого будет работать:

<*>

Но это только что дало мне ошибку.

.GetValue("DisplayName") } ` | Out-File addrem.txt

Я хочу, чтобы список был разделен символами новой строки для каждой программы. Я пробовал:

<*>

Но все это приводит к странному форматированию при выводе на консоль и с тремя квадратными символами после каждой строки при выводе в файл. Я попытался Format-List , Format-Table и Format-Wide , но безуспешно. Первоначально я думал, что-то вроде этого будет работать:

<*>

Но это только что дало мне ошибку.

.GetValue("DisplayName") `n } ` | out-file test.txt Get-ChildItem -path hklm:\software\microsoft\windows\currentversion\uninstall ` | ForEach-Object {

Я запускаю следующий код с помощью PowerShell, чтобы получить список добавления / удаления программ из реестра:

Get-ChildItem -path hklm:\software\microsoft\windows\currentversion\uninstall `
    | ForEach-Object -Process { Write-Output 

Я запускаю следующий код с помощью PowerShell, чтобы получить список добавления / удаления программ из реестра:

<*>

Я хочу, чтобы список был разделен символами новой строки для каждой программы. Я пробовал:

<*>

Но все это приводит к странному форматированию при выводе на консоль и с тремя квадратными символами после каждой строки при выводе в файл. Я попытался Format-List , Format-Table и Format-Wide , но безуспешно. Первоначально я думал, что-то вроде этого будет работать:

<*>

Но это только что дало мне ошибку.

.GetValue("DisplayName") } ` | Out-File addrem.txt

Я хочу, чтобы список был разделен символами новой строки для каждой программы. Я пробовал:

<*>

Но все это приводит к странному форматированию при выводе на консоль и с тремя квадратными символами после каждой строки при выводе в файл. Я попытался Format-List , Format-Table и Format-Wide , но безуспешно. Первоначально я думал, что-то вроде этого будет работать:

<*>

Но это только что дало мне ошибку.

.GetValue("DisplayName") } ` | Write-Host -Separator `n Get-ChildItem -path hklm:\software\microsoft\windows\currentversion\uninstall ` | ForEach-Object -Process {

Я запускаю следующий код с помощью PowerShell, чтобы получить список добавления / удаления программ из реестра:

Get-ChildItem -path hklm:\software\microsoft\windows\currentversion\uninstall `
    | ForEach-Object -Process { Write-Output 

Я запускаю следующий код с помощью PowerShell, чтобы получить список добавления / удаления программ из реестра:

<*>

Я хочу, чтобы список был разделен символами новой строки для каждой программы. Я пробовал:

<*>

Но все это приводит к странному форматированию при выводе на консоль и с тремя квадратными символами после каждой строки при выводе в файл. Я попытался Format-List , Format-Table и Format-Wide , но безуспешно. Первоначально я думал, что-то вроде этого будет работать:

<*>

Но это только что дало мне ошибку.

.GetValue("DisplayName") } ` | Out-File addrem.txt

Я хочу, чтобы список был разделен символами новой строки для каждой программы. Я пробовал:

<*>

Но все это приводит к странному форматированию при выводе на консоль и с тремя квадратными символами после каждой строки при выводе в файл. Я попытался Format-List , Format-Table и Format-Wide , но безуспешно. Первоначально я думал, что-то вроде этого будет работать:

<*>

Но это только что дало мне ошибку.

.GetValue("DisplayName") } ` | foreach(

Я запускаю следующий код с помощью PowerShell, чтобы получить список добавления / удаления программ из реестра:

Get-ChildItem -path hklm:\software\microsoft\windows\currentversion\uninstall `
    | ForEach-Object -Process { Write-Output 

Я запускаю следующий код с помощью PowerShell, чтобы получить список добавления / удаления программ из реестра:

<*>

Я хочу, чтобы список был разделен символами новой строки для каждой программы. Я пробовал:

<*>

Но все это приводит к странному форматированию при выводе на консоль и с тремя квадратными символами после каждой строки при выводе в файл. Я попытался Format-List , Format-Table и Format-Wide , но безуспешно. Первоначально я думал, что-то вроде этого будет работать:

<*>

Но это только что дало мне ошибку.

.GetValue("DisplayName") } ` | Out-File addrem.txt

Я хочу, чтобы список был разделен символами новой строки для каждой программы. Я пробовал:

<*>

Но все это приводит к странному форматированию при выводе на консоль и с тремя квадратными символами после каждой строки при выводе в файл. Я попытался Format-List , Format-Table и Format-Wide , но безуспешно. Первоначально я думал, что-то вроде этого будет работать:

<*>

Но это только что дало мне ошибку.

) { echo

Я запускаю следующий код с помощью PowerShell, чтобы получить список добавления / удаления программ из реестра:

Get-ChildItem -path hklm:\software\microsoft\windows\currentversion\uninstall `
    | ForEach-Object -Process { Write-Output 

Я запускаю следующий код с помощью PowerShell, чтобы получить список добавления / удаления программ из реестра:

<*>

Я хочу, чтобы список был разделен символами новой строки для каждой программы. Я пробовал:

<*>

Но все это приводит к странному форматированию при выводе на консоль и с тремя квадратными символами после каждой строки при выводе в файл. Я попытался Format-List , Format-Table и Format-Wide , но безуспешно. Первоначально я думал, что-то вроде этого будет работать:

<*>

Но это только что дало мне ошибку.

.GetValue("DisplayName") } ` | Out-File addrem.txt

Я хочу, чтобы список был разделен символами новой строки для каждой программы. Я пробовал:

<*>

Но все это приводит к странному форматированию при выводе на консоль и с тремя квадратными символами после каждой строки при выводе в файл. Я попытался Format-List , Format-Table и Format-Wide , но безуспешно. Первоначально я думал, что-то вроде этого будет работать:

<*>

Но это только что дало мне ошибку.

`n }

Я хочу, чтобы список был разделен символами новой строки для каждой программы. Я пробовал:

<*>

Но все это приводит к странному форматированию при выводе на консоль и с тремя квадратными символами после каждой строки при выводе в файл. Я попытался Format-List , Format-Table и Format-Wide , но безуспешно. Первоначально я думал, что-то вроде этого будет работать:

<*>

Но это только что дало мне ошибку.

.GetValue("DisplayName") } ` | Out-File addrem.txt

Я хочу, чтобы список был разделен символами новой строки для каждой программы. Я пробовал:

<*>

Но все это приводит к странному форматированию при выводе на консоль и с тремя квадратными символами после каждой строки при выводе в файл. Я попытался Format-List , Format-Table и Format-Wide , но безуспешно. Первоначально я думал, что-то вроде этого будет работать:

<*>

Но это только что дало мне ошибку.

Это было полезно?

Решение

Или просто установите разделитель полей вывода (OFS), чтобы удвоить символы новой строки, а затем убедитесь, что вы получаете строку при отправке в файл:

$OFS = "`r`n`r`n"
"$( gci -path hklm:\software\microsoft\windows\currentversion\uninstall | 
    ForEach-Object -Process { write-output 

Или просто установите разделитель полей вывода (OFS), чтобы удвоить символы новой строки, а затем убедитесь, что вы получаете строку при отправке в файл:

<*>

Остерегайтесь использовать `, а не '. На моей клавиатуре (раскладка Qwerty на американском и английском языках) она расположена слева от 1 .
(Перенесено сюда из комментариев - спасибо Коену Зомерсу)

.GetValue('DisplayName') } )" | out-file addrem.txt

Остерегайтесь использовать `, а не '. На моей клавиатуре (раскладка Qwerty на американском и английском языках) она расположена слева от 1 .
(Перенесено сюда из комментариев - спасибо Коену Зомерсу)

Другие советы

Дайте этому попытку:

PS> $nl = [Environment]::NewLine
PS> gci hklm:\software\microsoft\windows\currentversion\uninstall | 
        ForEach { 

Дайте этому попытку:

Adobe AIR

Adobe Flash Player 10 ActiveX

...

В моем файле addrem.txt выдается следующий текст:

ForEach-Object -Process { "

Дайте этому попытку:

PS> $nl = [Environment]::NewLine
PS> gci hklm:\software\microsoft\windows\currentversion\uninstall | 
        ForEach { 

Дайте этому попытку:

Adobe AIR

Adobe Flash Player 10 ActiveX

...

В моем файле addrem.txt выдается следующий текст:

Foreach-Object -Process { "$(

Дайте этому попытку:

PS> $nl = [Environment]::NewLine
PS> gci hklm:\software\microsoft\windows\currentversion\uninstall | 
        ForEach { 

Дайте этому попытку:

Adobe AIR

Adobe Flash Player 10 ActiveX

...

В моем файле addrem.txt выдается следующий текст:

ForEach-Object -Process { "

Дайте этому попытку:

PS> $nl = [Environment]::NewLine
PS> gci hklm:\software\microsoft\windows\currentversion\uninstall | 
        ForEach { 

Дайте этому попытку:

Adobe AIR

Adobe Flash Player 10 ActiveX

...

В моем файле addrem.txt выдается следующий текст:

$(`<Multiple statements can go in here`>).

Примечание: в моей системе GetValue (" DisplayName ") возвращает ноль для некоторых записей, поэтому я отфильтрую их. Кстати, вы были близки с этим:

<*>

За исключением того, что внутри строки, если вам нужно получить доступ к свойству переменной, то есть "оценивать выражение", вам нужно использовать синтаксис подвыражения, например, так:

<*>

По сути, внутри строки в двойных кавычках PowerShell будет расширять переменные, такие как $ _ , но не будет оценивать выражения , если вы не поместите выражение в подвыражение, используя следующий синтаксис: <*>.GetValue("DisplayName") } | Where {

Дайте этому попытку:

<*>

В моем файле addrem.txt выдается следующий текст:

<*>

Примечание: в моей системе GetValue (" DisplayName ") возвращает ноль для некоторых записей, поэтому я отфильтрую их. Кстати, вы были близки с этим:

<*>

За исключением того, что внутри строки, если вам нужно получить доступ к свойству переменной, то есть "оценивать выражение", вам нужно использовать синтаксис подвыражения, например, так:

<*>

По сути, внутри строки в двойных кавычках PowerShell будет расширять переменные, такие как $ _ , но не будет оценивать выражения , если вы не поместите выражение в подвыражение, используя следующий синтаксис: <*>} | Sort | Foreach {"

Дайте этому попытку:

<*>

В моем файле addrem.txt выдается следующий текст:

<*>

Примечание: в моей системе GetValue (" DisplayName ") возвращает ноль для некоторых записей, поэтому я отфильтрую их. Кстати, вы были близки с этим:

<*>

За исключением того, что внутри строки, если вам нужно получить доступ к свойству переменной, то есть "оценивать выражение", вам нужно использовать синтаксис подвыражения, например, так:

<*>

По сути, внутри строки в двойных кавычках PowerShell будет расширять переменные, такие как $ _ , но не будет оценивать выражения , если вы не поместите выражение в подвыражение, используя следующий синтаксис: <*>$nl"} | Out-File addrem.txt -Enc ascii

В моем файле addrem.txt выдается следующий текст:

<*>

Примечание: в моей системе GetValue (" DisplayName ") возвращает ноль для некоторых записей, поэтому я отфильтрую их. Кстати, вы были близки с этим:

<*>

За исключением того, что внутри строки, если вам нужно получить доступ к свойству переменной, то есть "оценивать выражение", вам нужно использовать синтаксис подвыражения, например, так:

<*>

По сути, внутри строки в двойных кавычках PowerShell будет расширять переменные, такие как $ _ , но не будет оценивать выражения , если вы не поместите выражение в подвыражение, используя следующий синтаксис: <*>.GetValue("DisplayName") `n" }

Примечание: в моей системе GetValue (" DisplayName ") возвращает ноль для некоторых записей, поэтому я отфильтрую их. Кстати, вы были близки с этим:

<*>

За исключением того, что внутри строки, если вам нужно получить доступ к свойству переменной, то есть "оценивать выражение", вам нужно использовать синтаксис подвыражения, например, так:

<*>

По сути, внутри строки в двойных кавычках PowerShell будет расширять переменные, такие как $ _ , но не будет оценивать выражения , если вы не поместите выражение в подвыражение, используя следующий синтаксис: <*>.GetValue("DisplayName") } | Where {

Дайте этому попытку:

<*>

В моем файле addrem.txt выдается следующий текст:

<*>

Примечание: в моей системе GetValue (" DisplayName ") возвращает ноль для некоторых записей, поэтому я отфильтрую их. Кстати, вы были близки с этим:

<*>

За исключением того, что внутри строки, если вам нужно получить доступ к свойству переменной, то есть "оценивать выражение", вам нужно использовать синтаксис подвыражения, например, так:

<*>

По сути, внутри строки в двойных кавычках PowerShell будет расширять переменные, такие как $ _ , но не будет оценивать выражения , если вы не поместите выражение в подвыражение, используя следующий синтаксис: <*>} | Sort | Foreach {"

Дайте этому попытку:

<*>

В моем файле addrem.txt выдается следующий текст:

<*>

Примечание: в моей системе GetValue (" DisplayName ") возвращает ноль для некоторых записей, поэтому я отфильтрую их. Кстати, вы были близки с этим:

<*>

За исключением того, что внутри строки, если вам нужно получить доступ к свойству переменной, то есть "оценивать выражение", вам нужно использовать синтаксис подвыражения, например, так:

<*>

По сути, внутри строки в двойных кавычках PowerShell будет расширять переменные, такие как $ _ , но не будет оценивать выражения , если вы не поместите выражение в подвыражение, используя следующий синтаксис: <*>$nl"} | Out-File addrem.txt -Enc ascii

В моем файле addrem.txt выдается следующий текст:

<*>

Примечание: в моей системе GetValue (" DisplayName ") возвращает ноль для некоторых записей, поэтому я отфильтрую их. Кстати, вы были близки с этим:

<*>

За исключением того, что внутри строки, если вам нужно получить доступ к свойству переменной, то есть "оценивать выражение", вам нужно использовать синтаксис подвыражения, например, так:

<*>

По сути, внутри строки в двойных кавычках PowerShell будет расширять переменные, такие как $ _ , но не будет оценивать выражения , если вы не поместите выражение в подвыражение, используя следующий синтаксис: <*>.GetValue('DisplayName'))`r`n" }

Примечание: в моей системе GetValue (" DisplayName ") возвращает ноль для некоторых записей, поэтому я отфильтрую их. Кстати, вы были близки с этим:

<*>

За исключением того, что внутри строки, если вам нужно получить доступ к свойству переменной, то есть "оценивать выражение", вам нужно использовать синтаксис подвыражения, например, так:

<*>

По сути, внутри строки в двойных кавычках PowerShell будет расширять переменные, такие как $ _ , но не будет оценивать выражения , если вы не поместите выражение в подвыражение, используя следующий синтаксис: <*>.GetValue("DisplayName") } | Where {

Дайте этому попытку:

<*>

В моем файле addrem.txt выдается следующий текст:

<*>

Примечание: в моей системе GetValue (" DisplayName ") возвращает ноль для некоторых записей, поэтому я отфильтрую их. Кстати, вы были близки с этим:

<*>

За исключением того, что внутри строки, если вам нужно получить доступ к свойству переменной, то есть "оценивать выражение", вам нужно использовать синтаксис подвыражения, например, так:

<*>

По сути, внутри строки в двойных кавычках PowerShell будет расширять переменные, такие как $ _ , но не будет оценивать выражения , если вы не поместите выражение в подвыражение, используя следующий синтаксис: <*>} | Sort | Foreach {"

Дайте этому попытку:

<*>

В моем файле addrem.txt выдается следующий текст:

<*>

Примечание: в моей системе GetValue (" DisplayName ") возвращает ноль для некоторых записей, поэтому я отфильтрую их. Кстати, вы были близки с этим:

<*>

За исключением того, что внутри строки, если вам нужно получить доступ к свойству переменной, то есть "оценивать выражение", вам нужно использовать синтаксис подвыражения, например, так:

<*>

По сути, внутри строки в двойных кавычках PowerShell будет расширять переменные, такие как $ _ , но не будет оценивать выражения , если вы не поместите выражение в подвыражение, используя следующий синтаксис: <*>$nl"} | Out-File addrem.txt -Enc ascii

В моем файле addrem.txt выдается следующий текст:

<*>

Примечание: в моей системе GetValue (" DisplayName ") возвращает ноль для некоторых записей, поэтому я отфильтрую их. Кстати, вы были близки с этим:

<*>

За исключением того, что внутри строки, если вам нужно получить доступ к свойству переменной, то есть "оценивать выражение", вам нужно использовать синтаксис подвыражения, например, так:

<*>

По сути, внутри строки в двойных кавычках PowerShell будет расширять переменные, такие как $ _ , но не будет оценивать выражения , если вы не поместите выражение в подвыражение, используя следующий синтаксис: <*>.GetValue("DisplayName") `n" }

Примечание: в моей системе GetValue (" DisplayName ") возвращает ноль для некоторых записей, поэтому я отфильтрую их. Кстати, вы были близки с этим:

<*>

За исключением того, что внутри строки, если вам нужно получить доступ к свойству переменной, то есть "оценивать выражение", вам нужно использовать синтаксис подвыражения, например, так:

<*>

По сути, внутри строки в двойных кавычках PowerShell будет расширять переменные, такие как $ _ , но не будет оценивать выражения , если вы не поместите выражение в подвыражение, используя следующий синтаксис: <*>.GetValue("DisplayName") } | Where {

Дайте этому попытку:

<*>

В моем файле addrem.txt выдается следующий текст:

<*>

Примечание: в моей системе GetValue (" DisplayName ") возвращает ноль для некоторых записей, поэтому я отфильтрую их. Кстати, вы были близки с этим:

<*>

За исключением того, что внутри строки, если вам нужно получить доступ к свойству переменной, то есть "оценивать выражение", вам нужно использовать синтаксис подвыражения, например, так:

<*>

По сути, внутри строки в двойных кавычках PowerShell будет расширять переменные, такие как $ _ , но не будет оценивать выражения , если вы не поместите выражение в подвыражение, используя следующий синтаксис: <*>} | Sort | Foreach {"

Дайте этому попытку:

<*>

В моем файле addrem.txt выдается следующий текст:

<*>

Примечание: в моей системе GetValue (" DisplayName ") возвращает ноль для некоторых записей, поэтому я отфильтрую их. Кстати, вы были близки с этим:

<*>

За исключением того, что внутри строки, если вам нужно получить доступ к свойству переменной, то есть "оценивать выражение", вам нужно использовать синтаксис подвыражения, например, так:

<*>

По сути, внутри строки в двойных кавычках PowerShell будет расширять переменные, такие как $ _ , но не будет оценивать выражения , если вы не поместите выражение в подвыражение, используя следующий синтаксис: <*>$nl"} | Out-File addrem.txt -Enc ascii

В моем файле addrem.txt выдается следующий текст:

<*>

Примечание: в моей системе GetValue (" DisplayName ") возвращает ноль для некоторых записей, поэтому я отфильтрую их. Кстати, вы были близки с этим:

<*>

За исключением того, что внутри строки, если вам нужно получить доступ к свойству переменной, то есть "оценивать выражение", вам нужно использовать синтаксис подвыражения, например, так:

<*>

По сути, внутри строки в двойных кавычках PowerShell будет расширять переменные, такие как $ _ , но не будет оценивать выражения , если вы не поместите выражение в подвыражение, используя следующий синтаксис: <*>

В конечном счете, то, что вы пытаетесь сделать с ДОПОЛНИТЕЛЬНЫМИ пустыми строками между каждой, немного сбивает с толку :)

Я думаю, что вы действительно хотите сделать, это использовать Get-ItemProperty . Вы будете получать ошибки, когда значения отсутствуют, но вы можете подавить их с помощью -ErrorAction 0 или просто оставить их как напоминания. Поскольку поставщик реестра возвращает дополнительные свойства, вам нужно вставить Select- Объект , который использует те же свойства, что и Get-Properties.

Затем, если вы хотите, чтобы каждое свойство находилось в строке с пустой строкой, используйте Format-List (в противном случае используйте Format-Table чтобы получить по одному в строке).

gci -path hklm:\software\microsoft\windows\currentversion\uninstall |
gp -Name DisplayName, InstallDate | 
select DisplayName, InstallDate | 
fl | out-file addrem.txt

Я думаю, у вас была правильная идея с вашим последним примером. Вы получили ошибку только потому, что пытались поместить кавычки в уже заключенную в кавычки строку. Это исправит это:

gci -path hklm:\software\microsoft\windows\currentversion\uninstall | ForEach-Object -Process { write-output (

Я думаю, у вас была правильная идея с вашим последним примером. Вы получили ошибку только потому, что пытались поместить кавычки в уже заключенную в кавычки строку. Это исправит это:

gci -path hklm:\software\microsoft\windows\currentversion\uninstall | ForEach-Object -Process { write-output "$(

Я думаю, у вас была правильная идея с вашим последним примером. Вы получили ошибку только потому, что пытались поместить кавычки в уже заключенную в кавычки строку. Это исправит это:

gci -path hklm:\software\microsoft\windows\currentversion\uninstall | ForEach-Object -Process { write-output (

Я думаю, у вас была правильная идея с вашим последним примером. Вы получили ошибку только потому, что пытались поместить кавычки в уже заключенную в кавычки строку. Это исправит это:

<*>

Редактировать: оператор Кита () фактически создает лучший синтаксис (я всегда забываю об этом). Вы также можете экранировать кавычки внутри кавычек следующим образом:

<*>.GetValue("DisplayName") + "`n") }

Редактировать: оператор Кита () фактически создает лучший синтаксис (я всегда забываю об этом). Вы также можете экранировать кавычки внутри кавычек следующим образом:

<*>.GetValue(`"DisplayName`"))`n" }

Редактировать: оператор Кита () фактически создает лучший синтаксис (я всегда забываю об этом). Вы также можете экранировать кавычки внутри кавычек следующим образом:

<*>.GetValue("DisplayName") + "`n") }

Редактировать: оператор Кита () фактически создает лучший синтаксис (я всегда забываю об этом). Вы также можете экранировать кавычки внутри кавычек следующим образом:

<*>

Опция, которую я обычно использую, в основном потому, что она проста и мне не нужно думать, использует Write-Output как показано ниже. Write-Output поместит маркер EOL в строку для вас, и вы можете просто вывести готовую строку.

Write-Output $stringThatNeedsEOLMarker | Out-File -FilePath PathToFile -Append

Кроме того, вы также можете просто собрать всю строку, используя Write-Output, а затем вставить готовую строку в Out-File .

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top