我需要一个脚本,将某个文件夹及其所有子文件夹+文件从网络服务器下载到我的电脑。它需要在powershell中。我搜索了一下,发现了这个:
Invoke-WebRequest http://www.example.com/package.zip -OutFile package.zip
当我尝试运行它时出现此错误。但我不知道如何通过它传递用户名和密码。如果有人可以帮助我,将不胜感激!另外我如何指定它应该保存到的文件夹?提前致谢
我需要一个脚本,将某个文件夹及其所有子文件夹+文件从网络服务器下载到我的电脑。它需要在powershell中。我搜索了一下,发现了这个:
Invoke-WebRequest http://www.example.com/package.zip -OutFile package.zip
当我尝试运行它时出现此错误。但我不知道如何通过它传递用户名和密码。如果有人可以帮助我,将不胜感激!另外我如何指定它应该保存到的文件夹?提前致谢
跟进我的评论。
我问这个问题是因为有些网站要求您在证书演示中具体说明,而不是仅仅一串东西。例如:
$credentials = Get-Credential
$webServerUrl = 'http://SomeWebSite'
$r = Invoke-WebRequest $webServerUrl -SessionVariable my_session
$form = $r.Forms[0]
$form.fields['Username'] = $credentials.GetNetworkCredential().UserName
$form.fields['Password'] = $credentials.GetNetworkCredential().Password
$InvokeWebRequestSplat = @{
Uri = $($webServerUrl + $form.Action)
WebSession = $my_session
Method = 'GET '
Body = $form.Fields
}
$r = Invoke-WebRequest @InvokeWebRequestSplat
更新
评论的后续行动。这是使用 IE 和 PowerShell 进行站点自动化。
# Scrape the site to find form data
$url = 'https://pwpush.com'
($FormElements = Invoke-WebRequest -Uri $url -SessionVariable fe)
($Form = $FormElements.Forms[0]) | Format-List -Force
$Form | Get-Member
$Form.Fields
# Use the info on the site
$IE = New-Object -ComObject "InternetExplorer.Application"
$FormElementsequestURI = "https://pwpush.com"
$Password = "password_payload"
$SubmitButton = "submit"
$IE.Visible = $true
$IE.Silent = $true
$IE.Navigate($FormElementsequestURI)
While ($IE.Busy) {
Start-Sleep -Milliseconds 100
}
$Doc = $IE.Document
$Doc.getElementsByTagName("input") | ForEach-Object {
if ($_.id -ne $null){
if ($_.id.contains($SubmitButton)) {$SubmitButton = $_}
if ($_.id.contains($Password)) {$Password = $_}
}
}
$Password.value = "1234"
$SubmitButton.click()
Invoke-WebRequest 是 Powershell 的 curl 版本。它的别名甚至被命名为 curl。
因此,在 IVR 用例中,您真正需要做的只是 Facebook 和 Linkedin 示例:
$cred = Get-Credential
$login = Invoke-WebRequest 'facebook.com/login.php' -SessionVariable 'fb'
$login.Forms[0].Fields.email = $cred.UserName
$login.Forms[0].Fields.pass = $cred.GetNetworkCredential().Password
$mainPage = Invoke-WebRequest $login.Forms[0].Action -WebSession $fb -Body $login -Method Post
$cred = Get-Credential
$login = Invoke-WebRequest 'https://www.linkedin.com/uas/login?goback=&trk=hb_signin' -SessionVariable 'li'
$login.Forms[0].Fields.email = $cred.UserName
$login.Forms[0].Fields.pass = $cred.GetNetworkCredential().Password
$mainPage = Invoke-WebRequest $login.Forms[0].Action -WebSession $LI -Body $login -Method Post
然而,请注意我在 FB/LI 登录页面上,在尝试此操作之前我需要知道它甚至存在。请注意,这是旧代码,我很长时间没有使用过,而且我没有 FB 帐户。我把这个传给了做过的人。
$cred = Get-Credential
Invoke-WebRequest http://www.example.com/package.zip -OutFile package.zip -Credential $cred