从Powershell中的配置文件中读取动态日志文件名

时间:2017-10-24 13:41:21

标签: xml powershell

我目前在Powershell脚本的顶部定义了所有变量,包括具有动态名称的日志文件:

$log = '\\serv1\Log\dev-Log' + $(get-date -f yyyy-MM-dd) + '.log'

然后,这将为$ log变量赋值:

\\serv1\Log\dev-Log2017-10-20.log

我现在正计划将所有这些特定于环境的变量移动到单独的XML配置文件中,并且我不太清楚如何在动态名称方面做类似的事情。我目前有一个包含以下内容的XML文件:

<?xml version="1.0" encoding="utf-8" ?>
<settings>
    <process>FALSE</process>
    <xmlDir>\\serv1\dev</xmlDir>
    <scanDir>\\serv1\dev</scanDir>
    <processedDir>\\serv1\dev\done</processedDir>
    <errorDir>\\serv1\dev\err</errorDir>
    <log>\\serv1\dev\log\dev-Log' + $(get-date -f yyyy-MM-dd) + '.log</log>
</settings>

当我读入配置变量时如下:

[xml]$configFile = Get-Content $PSScriptRoot\settings.xml
$log = $configFile.settings.log

它给了我:

\\serv1\dev\log\dev-Log' + $(get-date -f yyyy-MM-dd) + '.log

有没有办法让这个日志文件名动态化,这是从XML检索信息的最佳方法吗?

任何帮助非常感谢。感谢。

2 个答案:

答案 0 :(得分:1)

如果要在执行脚本时填充日期,可以在XML中放置占位符,然后在执行时替换它。例如:

XML:

os.system('command & pause')

代码:

ApiSelectorBuilder builder = new Docket(DocumentationType.SWAGGER_2)
  .useDefaultResponseMessages(false)
  .apiInfo(apiInfo())
  .securitySchemes(securitySchemes())
  .select()
  .apis(RequestHandlerSelectors.any())
  .paths(Predicates.not(PathSelectors.regex("/actuator.*")))
  .build();

答案 1 :(得分:1)

其他方法:您可以使用-format(或-f):

XML:

<?xml version="1.0" encoding="utf-8" ?>
<settings>
    <process>FALSE</process>
    <xmlDir>\\serv1\dev</xmlDir>
    <scanDir>\\serv1\dev</scanDir>
    <processedDir>\\serv1\dev\done</processedDir>
    <errorDir>\\serv1\dev\err</errorDir>
    <log>\\serv1\dev\log\dev-Log{0:yyyy-MM-dd}.log</log>
</settings>

代码:

[xml]$configFile = get-content "c:\temp\test.xml.txt"
$configFile.settings.log -f (get-date)