使用以下逻辑编写 Powershell 脚本的指南 [关闭]
Posted
技术标签:
【中文标题】使用以下逻辑编写 Powershell 脚本的指南 [关闭]【英文标题】:Guidance for writing a Powershell script with the following logic [closed] 【发布时间】:2014-12-12 19:05:57 【问题描述】:使用此逻辑编写 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 有一些选项。
【问题讨论】:
Get-Date 肯定是您想要开始的地方。有了它,您可以轻松计算前一天、前一个月。然后你可能想查看 Get-ChildItem 来浏览文件并获取它们的属性。 不错。非常感谢你。我现在就开始搜索这个。 【参考方案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"
很高兴你得到了答案;)
【讨论】:
谢谢您,先生。这很有帮助。 好的,所以我尝试了(Get-Date).AddDays(-1)
,效果很好。现在我需要格式化,但是当我运行 (Get-Date).AddDays(-1) -format MMyyyy
时,我收到一条错误消息:“您必须在右侧提供一个值表达式'-f' 运算符。我将如何格式化输出?你有什么建议吗?研究看看我是否可以为你提供类似 unix 的管道功能。
你是最棒的。我会支持你,但我没有所需的代表。谢谢。
没问题。只需将其标记为已回答,这样它就不会在 Feed 过滤器中显示为未回答。
好的答案得到我的投票以上是关于使用以下逻辑编写 Powershell 脚本的指南 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
Powershell企业应用 - 第05章 编写Powershell日志系统
使用powershell 编写一个批量移动用户到指定ou的脚本