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
}
我正在创建一个简单的 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
}