N
N
Nikita2015-04-08 13:11:46
PowerShell
Nikita, 2015-04-08 13:11:46

How to save data from a variable to a file whose name contains other variables?

Good day to all.
The question arose of how to output data to a file whose name contains variables.
$a = "08"
$b = "04"
$c = "2015"
$data= "111
222
333
444"
$data >> "$a_$b_$c_log.txt"
In this case, the output will be the following name : .txt
tried to enclose variables in quotes and escape them and everything is wrong, either an error or extra characters. Tell me please, how can I do it?

Answer the question

In order to leave comments, you need to log in

2 answer(s)
O
oleg8, 2015-04-08
@Apologiz

I perverted
$tfile="D:\$(get-date -uformat '%Y%m%d')_t.csv"
in variable D:\20150408_t.csv like this

F
Filkri, 2019-12-13
@Filkri

So far, I decided to do it like this, I need to finish it, not in general plow =) well, maybe I can throw in the little things, the main thing is doing.
#Объявляем функцию содержащую способ вывода и сорт. по свойству DisplayName.
function Grid-Output
{
param (
<#
Объявляем, что наличие массива элементов указанного ниже для работы
данной функции явлется строго обязательным
#>
[Parameter (Mandatory = $true)]
[Array] $Massive
)
<#
Сортируем вывод по свойству DisplayName, далее указываем формат вывода
GridView
#>
$Massive |sort-object -property DisplayName | Out-GridView
}
<#
Получаем объекты из реестра.
На данном этапе из реестра мы получ. объекты типа:
System.MarshalByRefObject.RegistryKey (Microsoft.Win32.RegistryKey)
Отдельный объект для этих целей был создан потому что:
1.Возможно данный объект, в последующем, необходимо будет изменить.
Скорее всего даже на функцию анализирующую массивы
элементов описанных ниже, формируя единый массив:
1.1: $soft = Get-WmiObject -Class Win32_Product
1.2: $soft32 = gci "HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall"
1.3: $soft64 = gci "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"
В связи с этим мы изолируем его для упрощения последующих модификаций.
2. Улучшает читабельность кода.
#>
[array]$RegUnistValues = Get-ChildItem HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall
<#
Генерируем объекты Automation.PSCustomObject для каждого свойства полученных ранее объектов Win32.RegistryKey
Более подр. информацию по Get-ItemProperty можно почитать тут:
https://technet.microsoft.com/ru-ru/library/hh8498...
#>
[String]$temp = 'Здесь будут временно содержаться значения'
[Array]$temp = $RegUnistValues | ForEach-object {(Get-ItemProperty Microsoft.PowerShell.Core\Registry::$_)}
#вывод полученных данных с помощью ранее написанной функции Grid-Output
Grid-Output -Massive ($temp | Select-Object -Property DisplayName, DIsplayVersion, PSChildName | Export-Csv -Path c:\temp\$env:COMPUTERNAME.csv)
#Обнуляем значение, дабы не оставлять после себя артефактов со значениями реестра.
[String]$RegUnistValues = 'Здесь содержались значения реестра'
[String]$temp = 'Здесь временно содержались значения'
<#
Блокируем автоматическое закрытие окна PowerShell после выполнения скрипта. В данном конкретном случае,
мне необходимо было сделать именно таким образом, однако правильнее будет запустить скрипт с ключом:
powershell.exe -NoExit -command c:\myscript.ps1
Ибо вносить для этого отдельные изменения в сценарий не рекомендуется.
#>
$host.ui.RawUI.ReadKey(6)|out-null

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question