Информация
Итак, я собираюсь почистить мою локальную интранет, где наша HR-команда загрузит новую стартовую информацию и сможет либо сохранить эту информацию в удобном для использования формате, либо экспортировать ее в CSV длязатем использовать другой сценарий.
В настоящее время наша команда службы поддержки вручную просматривает эту страницу в интрасети и создает пользователей на основе информации, которую наша кадровая команда вводит один за другим.
Естественно,это очень трудоемкая задача, которую можно легко автоматизировать.К сожалению, наша команда HR не открыта для каких-либо изменений в процессе в настоящее время из-за другой работы, на которой они сосредоточены.Внутриполитические вещи, так что, к сожалению, их невозможно убедить.
Теперь мне удалось использовать Invoke-WebRequest
и получить содержимое страницы, но форматирование ужасное.Он возвращается как загрузка HTML, и я повторяю несколько этапов разбиения и замены строк, которые просто не кажутся мне оптимальными, и я чувствую, что есть лучший способ получить желаемые результаты.
Текущий сценарий
$webRequest = Invoke-WebRequest -Uri "http://intranet-site/HR/NewStarterList.php?action=ItToComp" -Headers @{"Header Info here"} -UseDefaultCredentials
$content = $webRequest.Content
$initialReplace = $content -replace '(?<=<).*?(?=>)', ' '
$split = $initialReplace -split "< >< >< >"
$split = $split -split "< >< >"
$split = $split -replace '< >',""
$split = $split[5..$($split.count)]
Как видите, это не совсем идеально, и мне интересно, есть ли лучший способ получить только ту информацию, которая мне нужна со страницы.
Исходный контент возвращается, как показано ниже (я сократил и заменил любые имена, чтобы было проще на глаз)
<html>
<head>
<title>New Starter List</title>
<link rel="STYLESHEET" type="text/css" href="/common/StyleSheet/Reports.css" /> <style> TD {font-family: Verdana; font-size: 8pt; border-left: solid 0px black; border-right: solid 0px black;} </style>
<script type="text/javascript" src="../../../cgi-bin/calendar/tableH.js"></script>
</head>
<body>
<img src="/common/images/logo.gif" border="0">
<br>
<br>
<b><span style="font-size: 12pt; font-variant: small-caps; ">New Starter List</span></b>
<br>Logged In As "UserName"<br>
<br>
<tableonMouseOver="javascript:trackTableHighlight(this.event,'FFFF66');"onMouseOut="javascript:highlightTableRow(0);" border="4" frame="border" width="80%" rules="none" cellspacing="6%" cellpadding="6%">
<th align="left">Date Started</th>
<th align="left">Name</th>
<th align="left">Initials</th>
<th align="left">Department</th>
<th align="left">Contact</th>
<th align="left">IT Completed?</th>
<th align="left">Supervisor Completed?</th>
<tr colspan="6"><td align="left">25 Sep 2019</td>
<td align="left"><a href="NewStarterInfo.php?id=3117">Joe Bloggs</a></td>
<td align="left">JXBL</td>
<td align="left">Team A</td>
<td align="left">Manager 1</td>
<td align="left">No</td>
<td align="left">Yes</td></tr>
<tr colspan="6"><td align="left">08 Jul 2019</td>
<td align="left"><a href="NewStarterInfo.php?id=3149">Harry Bloggs</a></td>
<td align="left">HXBL</td>
<td align="left">Team B</td>
<td align="left">Manager 2</td>
<td align="left">No</td>
<td align="left">Yes</td></tr>
<th align="left" colspan="7">72 starters</th>
</table>
</body>
</html>
После того, как я заполнил свои сплиты и заменил, он выглядит как ниже (опять же, имена изменились)
25 Sep 2019
Joe Bloggs
JXBL
Team 1
Manager 1
No
Yes
08 Jul 2019
Harry Bloggs
HXBL
Team 2
Manager 2
No
Yes
72 starters
Идея состоит в том, чтобы затем иметь возможность работать с этой информацией для автоматизации нашего процесса адаптации.
Мне кажется, что я упускаю что-то очевидное, например, есть аккуратный илиболее эффективный способ сделать это, так как я впервые использую Invoke-WebRequest
и нахожу это проблематичным в любом случае.
Ожидаемые результаты
Желательно, чтобы массив был предпочтительноиспользованияrs со свойствами для каждого бита информации, например, CSV или PSObject.
Поэтому, когда я вызываю переменную, содержащую информацию, я хочу, чтобы она возвращала что-то вроде следующего:
Name : Joe Bloggs
Initials : JXBL
Department : Team 1
Manager : Manager 1
IT : No
Supervisor : No
StartDate : 08 Jul 2019
Name : Harry Smith
Initials : HXSM
Department : Team 2
Manager : Manager 2
IT : Yes
Supervisor : No
Подобные вопросы
Я видел только один вопрос, который, казалось, мог охватить то, что я хотел, но в итоге мне понадобился цикл "try-catch". Аналогичный вопрос Ссылка
Пожалуйста, дайте мне знать, если вам нужна дополнительная информация, или если у вас есть какие-либо вопросы.
Заранее спасибо за помощь.
РЕДАКТИРОВАТЬ
Добавлен бит ожидаемых результатов, поскольку я понял, что этого не было.