Как добавить новую строку в вывод команды в PowerShell?
-
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 .