Powershell - 从其他文件中获取内容

时间:2015-07-27 08:29:45

标签: powershell ini

我只是创建一个简单的PowerShell脚本来检查服务是否正在运行,如果没有,则发送电子邮件。 (这已经有效了。)

我想做的是拥有配置文件,我可以在其中设置一些属性,如邮件收件人,服务名称等等。

问题:我应该为配置文件选择哪种类型(有比.txt更好的方法吗?)? 这个问题的背景是,我不想在我的powershell脚本中解析txt文件来获取所有这些属性值。有没有办法在我的配置文件中声明这些属性,以便稍后在powershell中轻松获取并解决它们? (就像配置文件中设置的全局变量,可以在我的.ps1文件中检索;)

2 个答案:

答案 0 :(得分:2)

我会创建配置的哈希表,并将这些设置存储在json文件中。您可以使用以下代码段转换哈希表:

$config = @{
    "mail" = "test@test.com"
    "service names" = @("srv1", "srv2")
}

$config | ConvertTo-Json | Out-File "c:\test.json"

使用以下方法将其转换回来:

$config = (gc "c:\test.json" -raw) | ConvertFrom-Json

现在,您可以使用$config.mail

访问这些值

答案 1 :(得分:2)

我建议使用xml。

创建XML文件,如下所示, Setting.xml

<?xml version="1.0"?>
<Settings>
    <EmailSettings>
        <SMTPServer>smtp.server.net</SMTPServer>
        <SMTPPort>25</SMTPPort>
        <MailFrom>mail@from.net</MailFrom>
        <MailTo>mail@to.net</MailTo>
    </EmailSettings>
</Settings>

然后在您的脚本.ps1

中导入它
[xml]$ConfigFile = Get-Content "your_path\Settings.xml"

$smtpsettings = @{
    To = $ConfigFile.Settings.EmailSettings.MailTo
    From = $ConfigFile.Settings.EmailSettings.MailFrom
    Subject = "I am a subject"
    SmtpServer = $ConfigFile.Settings.EmailSettings.SMTPServer
    }