Как использовать конфигурационный файл (ini, conf, ...) с помощью скрипта Powershell? Является ли это возможным?

Можно ли использовать файл конфигурации с помощью сценария PowerShell?

, например, файл конфигурации:

#links
link1=http://www.google.com
link2=http://www.apple.com
link3=http://www.microsoft.com

, а затем вызовите эту информацию в сценарии PS1:

start-process iexplore.exe $Link1

заблаговременно за помощь!

12 голосов | спросил Xavier C 30 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowThu, 30 Sep 2010 04:04:23 +0400 2010, 04:04:23

3 ответа


16

Большое спасибо за вашу помощь Деннис и Тим! Ваши ответы положили меня на хороший трек, и я нашел это

settings.txt

#from http://tlingenf.spaces.live.com/blog/cns!B1B09F516B5BAEBF!213.entry
#
[General]
MySetting1=value

[Locations]
InputFile="C:\Users.txt"
OutputFile="C:\output.log"

[Other]
WaitForTime=20
VerboseLogging=True

КОМАНДА POWERSHELL

#from http://tlingenf.spaces.live.com/blog/cns!B1B09F516B5BAEBF!213.entry
#
Get-Content "C:\settings.txt" | foreach-object -begin {[email protected]{}} -process { $k = [regex]::split($_,'='); if(($k[0].CompareTo("") -ne 0) -and ($k[0].StartsWith("[") -ne $True)) { $h.Add($k[0], $k[1]) } }

затем

После выполнения фрагмента кода переменная ($ h) будет содержать значения в HashTable.

Name                           Value
----                           -----
MySetting1                     value
VerboseLogging                 True
WaitForTime                    20
OutputFile                     "C:\output.log"
InputFile                      "C:\Users.txt"

* Чтобы извлечь элемент из таблицы, используйте команду $h.Get_Item("MySetting1").*

ответил Xavier C 30 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowThu, 30 Sep 2010 22:51:05 +0400 2010, 22:51:05
3

Здесь есть хорошая тема здесь который показывает этот код (цитата из связанного потока):

# from http://www.eggheadcafe.com/software/aspnet/30358576/powershell-and-ini-files.aspx
param ($file)

$ini = @{}
switch -regex -file $file
{
    "^\[(.+)\]$" {
        $section = $matches[1]
        $ini[$section] = @{}
    }
    "(.+)=(.+)" {
        $name,$value = $matches[1..2]
        $ini[$section][$name] = $value
    }
}
$ini

Затем вы можете сделать:

PS> $links = import-ini links.ini
PS> $links["search-engines"]["link1"]
http://www.google.com
PS> $links["vendors"]["link1"]
http://www.apple.com

Предположим, что файл INI выглядит так:

[vendors]
link1=http://www.apple.com
[search-engines]
link1=http://www.google.com

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

ответил Dennis Williamson 30 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowThu, 30 Sep 2010 05:29:27 +0400 2010, 05:29:27
2

да, командлеты, которые вы ищете, - это get-content и select-string.

$content=get-content C:\links.txt
start-process iexplore.exe $content[0]
ответил Tim 30 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowThu, 30 Sep 2010 04:11:43 +0400 2010, 04:11:43

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132