使用以下逻辑编写Powershell脚本的指南

时间:2014-12-12 19:05:57

标签: windows powershell batch-file maintenance

使用此逻辑编写Windows Power Shell脚本

  • 获取当前日期并验证是否是该月的第一天
  • 如果是,则计算前一天(以计算之前的2年/月值)
  • 搜索XMLA文件以使用新值替换上一年/月的组合

大家好,

我的任务是编写一个带有上述逻辑的powershell脚本。这个脚本需要每天在我维护的系统上运行。我是编程新手,所以我很难开始。如果有人有任何信息可能会让我朝着正确的方向发展,我会非常感激。先感谢您。

此外,我会经常检查这一点,如果有人有任何疑问,请询问。感谢

编辑:

以下是我需要编辑的文件中的代码:

<Process xmlns="http://schemas.microsoft.com/analysisservices/2003/engine">
    <Type>ProcessFull</Type>
    <Object>
        <DatabaseID>OLAPQA</DatabaseID>
        <CubeID>Model</CubeID>
        <MeasureGroupID>TRANSACTIONS</MeasureGroupID>
        <PartitionID>TRANSACTIONS 201410</PartitionID>
    </Object>
</Process>
<Process xmlns="http://schemas.microsoft.com/analysisservices/2003/engine">
    <Type>ProcessFull</Type>
    <Object>
        <DatabaseID>OLAPQA</DatabaseID>
        <CubeID>Model</CubeID>
        <MeasureGroupID>TRANSACTIONS</MeasureGroupID>
        <PartitionID>TRANSACTIONS 201411</PartitionID>
    </Object>
</Process>
<Process xmlns="http://schemas.microsoft.com/analysisservices/2003/engine">
    <Type>ProcessFull</Type>
    <Object>
        <DatabaseID>OLAPQA</DatabaseID>
        <CubeID>Model</CubeID>
        <MeasureGroupID>TRANSACTIONS</MeasureGroupID>
        <PartitionID>TRANSACTIONS 201412</PartitionID>
    </Object>
</Process> 

因此,当它是该月的第一天时,我需要进入此文件并基本上将每个日期值提高一个。只是想添加这个,如果这有助于回答任何问题。仍在努力完成所有逻辑但我会在遇到问题时发布问题。谢谢大家。

编辑2:

得到了我需要的输出:

(Get-Date).AddMonths(-2) | Get-Date -Format "yyyyMM"
(Get-Date).AddMonths(-1) | Get-Date -Format "yyyyMM"
(Get-Date) | Get-Date -Format "yyyyMM"

现在需要查看Get-ChildItem来编辑文件。这可能比我想象的更难,因为标签是相同的。希望这个cmdlet有一些选项。

1 个答案:

答案 0 :(得分:1)

您放置的代码不多 但这里有一些从......开始的指示。

if((Get-Date).Day -eq 1){
    # this is the first day of the month
    $yesterdayDay = (Get-Date).AddDays(-1).Day # this is the day of day before
    $yesterdayMonth = (Get-Date).AddDays(-1).Month # this is the month of day before
    $yesterdayYear = (Get-Date).AddDays(-1).Year # this is the year of day before
    $XMLfile = Get-ChildItem -Path "YourXmlFilePath"
    # rest of code ...
}
希望它有所帮助。

*在评论中的FORMAT问题后编辑:

$date = (Get-Date).AddDays(-1)
$dateFormat = Get-Date -Format "MMyyyy"
$dateFormat

或一个班轮:

(Get-Date).AddDays(-1) | Get-Date -Format "MMyyyy"

我很高兴你得到了答案;)