在Powershell中格式化Invoke WebRequest的输出 问询处
所以我想做的是清理我的本地内联网,我们的人力资源团队在这里上传新的初学者信息,并能够以可用的格式保存这些信息,或者将其导出到CSV,然后由另一个脚本使用 目前,我们的服务台团队手动查看此intranet页面,并根据我们的人力资源团队逐个输入的信息创建用户 当然,这是一项非常耗时的任务,可以很容易地实现自动化。不幸的是,我们的人力资源团队目前不愿意因为他们关注的其他工作而对流程进行任何更改。内部政治的东西,所以可悲的是他们无法被说服 现在,我已经设法使用在Powershell中格式化Invoke WebRequest的输出 问询处,powershell,Powershell,所以我想做的是清理我的本地内联网,我们的人力资源团队在这里上传新的初学者信息,并能够以可用的格式保存这些信息,或者将其导出到CSV,然后由另一个脚本使用 目前,我们的服务台团队手动查看此intranet页面,并根据我们的人力资源团队逐个输入的信息创建用户 当然,这是一项非常耗时的任务,可以很容易地实现自动化。不幸的是,我们的人力资源团队目前不愿意因为他们关注的其他工作而对流程进行任何更改。内部政治的东西,所以可悲的是他们无法被说服 现在,我已经设法使用调用WebRequest来获取页面内容,但是
调用WebRequest
来获取页面内容,但是格式太糟糕了。它以HTML的形式返回,我正在迭代分割和字符串替换的多个步骤,这对我来说不是最优的,我觉得有更好的方法来获得我想要的结果
当前脚本
然后,我们的想法是能够使用这些信息运行,以自动化我们的入职流程
我觉得我遗漏了一些明显的东西,比如说有一种更简洁或更有效的方法可以做到这一点,因为这是我第一次使用Invoke WebRequest
,并且发现它很麻烦
预期结果
我想要的最好是一个用户数组,每个信息位都有属性,比如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
类似问题
我只看到一个问题,看起来它可能涵盖了我想要的,但它最终是关于需要一个“尝试捕捉”循环。
如果您需要任何进一步的信息,或者您有任何问题,请告诉我
提前谢谢你的帮助
编辑
添加了一个预期结果位,因为我意识到这是缺失的。诀窍是要有一些东西来表示要保留的行 在上面的示例中,链接非常突出:
<a href="NewStarterInfo.php?id=3117">
JXBL
A队
经理1
不
对
2019年7月8日
HXBL
B队
经理2
不
对
72名起跑手
"@
将$a设置为页面内容,循环浏览它
foreach($x in $a.split("<")) # break it at the "<" that starts each line.
{
if ($x.contains("NewStarterInfo.php") -eq $true) { write-host $x.split(">")[1] }
}
foreach($x in$a.split)(“将DOM与.ParsedHtml.body.getElementsByTagName('Table')一起使用)
应该更直截了当,我会用关键字搜索powershell invoke webrequest scrape table
我会看看这个,看看它是否符合我的需要,谢谢突出显示!谢谢你的建议,这很适合单独选择名称,但我也需要这里的其他信息。因此开始日期,姓名,缩写(内部使用),团队,经理和2个内部问题的答案。我需要每个用户的所有信息。
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
<a href="NewStarterInfo.php?id=3117">
$a = @"
<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>
"@
foreach($x in $a.split("<")) # break it at the "<" that starts each line.
{
if ($x.contains("NewStarterInfo.php") -eq $true) { write-host $x.split(">")[1] }
}