2016-01-25 52 views
1

我对Powershell非常陌生。我一直在努力这个项目。我一直试图获得并保存在我的电脑中的这个文件。我尝试不同的方式,并要求对堆栈溢出如何自动保存记事本文件并关闭Powershell中的记事本

当我执行该代码

$ie = New-Object -ComObject 'internetExplorer.Application' 
$ie.Visible= $true 
$ie.Navigate("https://idp.appery.io/idp/") 

while ($ie.Busy -eq $true){Start-Sleep -seconds 1;} 

$usernamefield = $ie.Document.getElementByID('j_username') 
$usernamefield.value= $username 

$passwordfield = $ie.Document.getElementByID('j_password') 
$passwordfield.value = $password 

$Link=$ie.Document.getElementByID("loginBtn") 
$Link.click() 

while ($IE.Busy -eq $true) 

{ 

Start-Sleep -Milliseconds 2000; 

} 

$ie.Navigate("https://appery.io/bttttn/rest/1/admin/databases") 

当我执行上面的代码,记事本会自动弹出的“database.json”,就找哪里这个JSON文件在我的C盘,但我找不到它。这似乎刚刚打开文件, 所以我想

  1. 保存“database.json”我的文件夹

  2. 关闭记事本窗口,

我怎么能这样做?

非常感谢你!

+0

更改文件关联。 –

回答

1

不幸的是,你不能自动化记事本! (你也许能够击键发送给它,但它会变得非常混乱,容易出现破损)

一个更好的方法是使用调用-WebRequest的登录,然后下载文件

$request = Invoke-WebRequest $loginpage -SessionVariable "session" 
$form = $request.Forms[0] 
$form = $request.form['username'] 
$form = $request.form['password'] 
$request = Invoke-WebRequest -Uri ('$downloadlink + $form.Action) ` 
       -WebSession $session -Method POST ` 
       -Body $form.Fields -OutFile $filepath 

如果页面不返回一个表单对象,你可以做

$form = @{ "username" = $username 
      "password = $password} 

你需要看看在登录页面并提取用户名/密码的变量名。

我也没有测试过它!所以它是从记忆中获得的,但它会让你走上更可靠的轨道。

+0

我做到了,但它不工作,http://stackoverflow.com/questions/34954584/powershell-invoke-webrequest-form-where-is-the-form – Kazu

+1

@Kazu我已经修改了答案一点 –