如何从powershell中的配置文件中获取变量

How to get variables from config file in powershell

如何从 XML 中的配置文件获取变量?

我实际上是在使用 .txt 配置文件执行此操作。

这是我的实际代码:

Config.txt

[Repertoire de SPO (generalement C:\SPO)]
destinationn="C:\SPO"

[Nom du sous repertoire de SPO (generalement : SPO1)]
sous_destination="SPO1"

[Numero de la version de SPO vers laquelle vous souhaitez upgrade (par exemple : 1812.4)]
version="1812.4"

[Nom du pool dapplication lie a SPO (par defaut SPO_ADV)]
applicationPoolName="SPO_ADV"

[Chemin de livraison de la nouvelle version de SPO (par defaut \path\to\somewhere)]
livraisonn="\path\to\somewhere"

Powershell.ps1

Get-Content "$current_path\config.txt" | foreach-object -begin {$h=@{}} -process { $k = [regex]::split($_,'='); if(($k[0].CompareTo("") -ne 0) -and ($k[0].StartsWith("[") -ne $True)) { $h.Add($k[0], $k[1]) } }

$destinationn = $h.Get_Item("destinationn")

我想使用 .xml 配置文件做类似的事情。

正在从 App.Config

获取连接字符串
$appConfigFile = [IO.Path]::Combine($currentDirectory, '.\MyFile.config')

初始化 xml 对象

$appConfig = New-Object XML

将配置文件加载为 xml 对象

$appConfig.Load($appConfigFile)

遍历您想要的设置

foreach ($connectionString in $appConfig.configuration.connectionStrings.add) {
    # Get the connection string
    $dbconnectionstring = $connectionString.connectionString
}

这是我的配置xml

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <connectionStrings>
    <add name="AtomicScopeConStr" connectionString="Server= localhost; Database= mydatabase; Integrated Security=True;" />
  </connectionStrings>
  <appSettings>
  </appSettings>
</configuration>

Xml 使用 PowerShell 更容易解析。请参阅以下带有注释的示例:

#Translated XML config
@'
<root>
  <destinationn>C:\SPO</destinationn>
  <sous_destination>SPO1</sous_destination>
  <version>1812.4</version>
  <applicationPoolName>SPO_ADV</applicationPoolName>
  <livraisonn>\path\to\somewhere</livraisonn>
</root>
'@ | Out-File YourSampleConfig.xml

#read xml file, skip root
$config = ([xml](Get-Content YourSampleConfig.xml)).root

#get <destinationn> value
$config.destinationn

这是 HariHaran post 的后续。我的 connection.config 文件与他的文件具有相同的元素和结构,但我的工作代码略有不同。

使用它加载 xml 对象

$appConfig = New-Object XML
$appConfig.Load($appConfigFile)

或使用这个

[xml]$appConfig = Get-Content $appConfigFile

这是获取连接字符串的工作代码

foreach ($xmlAddElement in $appConfig.connectionStrings.add) {
    $connectionString = $xmlAddElement.connectionString
    Write-Host "$connectionString"
}