Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - Записать данные в файл

Ответить
Настройки темы
PowerShell - Записать данные в файл

Пользователь


Сообщения: 50
Благодарности: 0

Профиль | Отправить PM | Цитировать


Приветствую уважаемый форум и прошу помощи!

Powershell - Не могу справится самостоятельно с простой задачкой.

Есть переменная $s, содержащая массив данных
Код: Выделить весь код
$s.GetType().FullName
System.Object[]

Name                           Value                                                 
----                           -----                                                 
LeftScanerIP                   192.168.17.66                                         
LeftScanerPort                 5000                                                  
RigthScanerIP                  192.168.17.67                                         
RigthScanerPort                5000
Задача записать это в текстовый файл в виде:
Код: Выделить весь код
LeftScanerIP:192.168.17.66                                         
LeftScanerPort:5000                                                  
RigthScanerIP:192.168.17.67                                         
RigthScanerPort:5000
Помогите, пожалуйста!
Заранее спасибо всем откликнувшимся!

Отправлено: 15:56, 24-05-2022

 

Аватара для DJ Mogarych

fascinating rhythm


Moderator


Сообщения: 6491
Благодарности: 1465

Профиль | Отправить PM | Цитировать


Примерно так:
Код: Выделить весь код
$s |% {"$($_.name):$($_.value)"} > "D:\temp\output.txt"

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)


Отправлено: 16:23, 24-05-2022 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Пользователь


Сообщения: 50
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата DJ Mogarych:
Примерно так: »
У меня только двоеточия в файл выдает:
Код: Выделить весь код
PS C:\temp> $s

Name                           Value                                                 
----                           -----                                                 
LeftScanerIP                   192.168.17.66                                         
LeftScanerPort                 5000                                                  
RigthScanerIP                  192.168.17.67                                         
RigthScanerPort                5000             

PS C:\temp> $s | % {"$($_.name):$($_.value)"}
:
:
:
:
:
:
:
:
:
:

Отправлено: 16:27, 24-05-2022 | #3


Аватара для DJ Mogarych

fascinating rhythm


Moderator


Сообщения: 6491
Благодарности: 1465

Профиль | Отправить PM | Цитировать


А что выдаёт
Код: Выделить весь код
$s.Name
?

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)


Отправлено: 16:38, 24-05-2022 | #4


Пользователь


Сообщения: 50
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата DJ Mogarych:
А что выдаёт
Код:
$s.Name »
Ничего:
Код: Выделить весь код
PS C:\temp> $s.Name

PS C:\temp>

Отправлено: 16:41, 24-05-2022 | #5


Аватара для DJ Mogarych

fascinating rhythm


Moderator


Сообщения: 6491
Благодарности: 1465

Профиль | Отправить PM | Цитировать


Видимо, в переменной содержатся какие-то неструктурированные данные. Откуда данные в неё попали?

Так выдаёт что-нибудь?
Код: Выделить весь код
$s |sls "ip|port"

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)


Отправлено: 16:46, 24-05-2022 | #6


Пользователь


Сообщения: 50
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата DJ Mogarych:
Так выдаёт что-нибудь? »
нет
Цитата DJ Mogarych:
Видимо, в переменной содержатся какие-то неструктурированные данные. Откуда данные в неё попали? »
Код: Выделить весь код
$ConfigFile = $PSScriptRoot + "\settings1.ini"

Function ReadSettings ($ConfigFile){
$settings = (Get-Content $ConfigFile) -replace ":","=" | ConvertFrom-StringData
 return $settings
}
$s = ReadSettings $ConfigFile
settings1.ini выглядит так:
Код: Выделить весь код
LeftScanerIP:192.168.17.66
LeftScanerPort:5000
RigthScanerIP:192.168.17.67
RigthScanerPort:5000

Отправлено: 16:52, 24-05-2022 | #7


Аватара для DJ Mogarych

fascinating rhythm


Moderator


Сообщения: 6491
Благодарности: 1465

Профиль | Отправить PM | Цитировать


Ясно.

Код: Выделить весь код
$s |% {"$($_.keys):$($_.values)"} > "D:\temp\output.txt"

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)

Это сообщение посчитали полезным следующие участники:

Отправлено: 17:13, 24-05-2022 | #8


Пользователь


Сообщения: 50
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата DJ Mogarych:
$s |% {"$($_.keys):$($_.values)"} »

Спасибо! Так заработало

Последний раз редактировалось Udar_Nick, 25-05-2022 в 08:11.


Отправлено: 19:01, 24-05-2022 | #9


Пользователь


Сообщения: 50
Благодарности: 0

Профиль | Отправить PM | Цитировать


Еще раз прошу помощи, так как не знаю/не получается

Есть файл settings.ini
В скрипте открывается форма с полями, которые заполняются значениями, считываемыми из этого файла.
Я меняю какое-либо из значений поля(ей) и мне надо по нажатии кнопки "Записать" записать все значения полей (измененные и нет) в тот же файл.
Не пойму как обновить значение переменной после изменения значения соответствующего поля?

Код: Выделить весь код
Function ReadSettings ($ConfigFile){
$settings = (Get-Content $ConfigFile) -replace ":","=" | ConvertFrom-StringData
 return $settings
}
Function WriteSettings ($ConfigFile) {
$s | ForEach {"$($_.Keys):$($_.Values)"} > $ConfigFile
}

## Форма
Add-Type -assembly System.Windows.Forms
Add-Type -AssemblyName System.Drawing

$main_form = New-Object System.Windows.Forms.Form
$main_form.FormBorderStyle = [System.Windows.Forms.FormBorderStyle]::FixedToolWindow
$main_form.StartPosition = 'CenterScreen'
$main_form.Width = 500
$main_form.Height = 700
$main_form.AutoSize = $false
# Текстовое поле с изменяемым значением
$LeftScanerIP = New-Object System.Windows.Forms.TextBox
$LeftScanerIP.Location  = New-Object System.Drawing.Point(85,20)
$LeftScanerIP.Size = New-Object System.Drawing.Size(130,20)

$LeftScanerIP.Text = $settings.LeftScanerIP # переменная, которую считали из settings.ini

$GroupBoxLeft.Controls.Add($LeftScanerIP)
# Кнопка
$WriteSettings = New-Object System.Windows.Forms.Button
$WriteSettings.Text = 'Записать'
$WriteSettings.Location = New-Object System.Drawing.Point(100,460)
$WriteSettings.Size = New-Object System.Drawing.Size(160,40)
# Действие по нажатию кнопки
$WriteSettings.Add_Click({WriteSettings $ConfigFile})

Отправлено: 09:48, 25-05-2022 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - Записать данные в файл

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - Записать элемент массива в txt файл ntro123 Скриптовые языки администрирования Windows 1 23-02-2014 00:28
CMD/BAT - найти файл и записать в переменную pzh2393 Скриптовые языки администрирования Windows 7 20-01-2013 03:35
CMD/BAT - GUI окно, в которое вводяться данные передает эти данные в cmd файл, (редактирует) Neqste Скриптовые языки администрирования Windows 3 07-09-2011 05:31
[решено] Записать данные из ИНИ файла в одну строчку Centrinar AutoIt 1 18-03-2011 00:34
C/C++ - Записать переменую в файл DENoszone Программирование и базы данных 32 05-07-2008 06:55




 
Переход