用于站点登录的Powershell脚本不起作用

问题描述 投票:0回答:1

我的主要目标是使FTP传输自动化以每天运行。我有一个PowerShell脚本,我想使用它来登录有问题的FTP站点。我知道该脚本有效,因为我已经与其他站点/登录进行了测试,并且每次都可以完美运行。问题是,当网站加载时,登录屏幕会在弹出窗口中加载(下图),并且我无法右键单击检查元素或F12来在HTML中搜索对象名称,元素ID等。几乎可以想到的所有东西都可以用来猜测登录窗口的名称,但是我认为我的脚本甚至没有与弹出窗口通信。关于如何解决此特定问题的任何建议?我也包括了我最后得到的错误消息。

这是我的剧本:

$username = "myuser";
$password = "mypass";

#Create an instance of IE
$ie = New-Object -ComObject 'internetExplorer.Application'
$ie.Visible= $true # Make it visible

#Navigate to the site
$ie.Navigate("website.com")

While ($ie.Busy -eq $true) {Start-Sleep -Seconds 1;} #wait for browser idle

($ie.document.getElementById('User') | select -first 1).value = $username #enters username
Start-Sleep -Seconds 1 

($ie.document.getElementById('Pass') | select -first 1).value = $password #enters password
Start-Sleep -Seconds 1 

($ie.document.getElementById('Log on') | select -first 1).click() #clicks login button
Start-Sleep -Seconds 1

Screenshot of FTP Site

Screenshot of error messages

html powershell ftp
1个回答
0
投票

考虑使用PSFTP Powershell Module而不是Internet Explorer COM对象。使用以下命令安装它:

Install-Module PSFTP

基本上,使用Set-FTPConnection打开与FTP服务器的会话,使用New-FTPItem创建新的FTP目录,并使用Add-FTPItem上传新文件。 Get-FTPItem将用于检索远程文件。


这里是TechNet Gallery site的一些示例:

Import-Module PSFTP 

Set-FTPConnection -Credentials mgajda -Server ftp://ftp.server.org -Session MyTestSession -UsePassive 
$Session = Get-FTPConnection -Session MyTestSession 

New-FTPItem -Session $Session -Name TestRootDir 
New-FTPItem -Session $Session -Name TestDir1 -Path /TestRootDir 
New-FTPItem -Session $Session -Name TestDir2 -Path /TestRootDir 
New-FTPItem -Session $Session -Name TestDir11 -Path /TestRootDir/TestDir1 

Get-FTPChildItem -Session $Session -Path /TestRootDir -Recurse -Depth 2 

"Test File" | Out-File TestFile.txt 
Get-ChildItem TestFile.txt | Add-FTPItem -Session $Session -Path /TestRootDir 
Get-ChildItem TestFile.txt | Add-FTPItem -Session $Session -Path /TestRootDir -Overwrite 
Get-ChildItem TestFile.txt | Add-FTPItem -Session $Session -Path /TestRootDir/TestDir1  
Get-ChildItem TestFile.txt | Add-FTPItem -Session $Session -Path /TestRootDir/TestDir2 -BufferSize 5 
Add-FTPItem -Session $Session -Path /TestRootDir/TestDir1/TestDir11 -LocalPath TestFile.txt 

Get-FTPChildItem -Session $Session -Path /TestRootDir -Recurse -Depth 2 
Get-FTPChildItem -Session $Session -Path /TestRootDir -Recurse 

Get-FTPItemSize -Session $Session -Path /TestRootDir/TestDir1/TestFile.txt 

Rename-FTPItem -Session $Session -Path /TestRootDir/TestDir1/TestFile.txt -NewName TestFile2.txt 
Rename-FTPItem -Session $Session -Path /TestRootDir/TestDir1/TestFile2.txt -NewName ../TestFile2.txt 

Get-FTPChildItem -Session $Session -Path /TestRootDir | Get-FTPItem -Session $Session -LocalPath C:\test 
Get-FTPChildItem -Session $Session -Path /TestRootDir -Recurse | Get-FTPItem -Session $Session -LocalPath C:\test -RecreateFolders 

Get-FTPChildItem -Session $Session -Path /TestRootDir -Filter TestF* | Remove-FTPItem -Session $Session 
Remove-FTPItem -Session $Session -Path /TestRootDir -Recurse 
© www.soinside.com 2019 - 2024. All rights reserved.