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

Powershell - get contents from other file

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

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

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

我会为您的配置创建哈希表并将这些设置存储在 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

访问这些值

我建议使用 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
    }