2014-12-12 2 views
0

Написать скрипт для Windows Power Shell с этой логикойРуководство для написания сценария Powershell со следующей логикой

  • Получить текущую дату и убедиться в том, что это первый день месяца
  • Если да, то вычислить предыдущий день (для расчета предыдущего 2 года значения/месяца)
  • поиск XMLA файла заменить предыдущий год комбинацию/месяц с новыми значениями

Привет всем,

Мне поручено написать сценарий powershell с вышеуказанной логикой. Этот скрипт должен запускаться ежедневно в системе, которую я поддерживаю на работе. Я новичок в программировании, поэтому мне сложно начать работу. Если у кого-то есть информация, которая может подтолкнуть меня в правильном направлении, я бы очень признателен. Заранее спасибо.

Кроме того, я буду проверять это часто, поэтому, если у кого-то есть вопросы, тогда спросите. Благодаря

EDIT:

Ниже приведен код в файле, который мне нужно редактировать:

<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> 

Так что, когда это первый день месяца, мне нужно идти в этот файл и врезаться каждое значение даты в один раз. Просто хотел добавить это, если это поможет ответить на любые вопросы. Все еще работая через всю логику, но я буду задавать вопросы, когда сталкиваюсь с ними. Всем спасибо.

EDIT 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 для редактирования файла. Это может быть сложнее, чем я думал, поскольку теги одинаковы. Надеюсь, у этого командлета есть несколько вариантов.

+0

Get-Date является конечно, где вы хотите начать. С его помощью вы можете рассчитать предыдущий день, месяц, что угодно. Затем вы можете посмотреть в Get-ChildItem для просмотра файлов и получения их свойств. –

+0

Ницца. Большое спасибо. Сейчас я начну работать в Google. – powershelluser

ответ

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" 

Я рад, что вы получили ответ на свой вопрос;)

+0

спасибо добрый сэр. Это очень полезно. – powershelluser

+0

Хорошо, поэтому я попробовал (Get-Date).AddDays(-1), который отлично работает. Теперь мне нужно отформатировать, но когда я запустил (Get-Date).AddDays(-1) -format MMyyyy, я получаю сообщение об ошибке: «Вы должны предоставить выражение значения в правой части оператора« -f ». Как мне отформатировать вывод?Есть ли у вас какие-либо предложения? Исследование, чтобы узнать, могу ли я вам использовать функциональность unix как трубку. – powershelluser

+0

Ты лучший. Я бы поднял вас, но у меня нет необходимого представителя. Спасибо. – powershelluser

Смежные вопросы