为了在Windows上设置类似计划任务的“cron作业”,我使用之前的stackoverflow问题推荐的代码设置了Powershell脚本。
我有一些备份,我需要每天清理并删除旧备份,所以我创建了一个asp.net脚本来执行此任务 - 文件名是BackupCleanup.aspx,我已经确认ASP.net脚本确实有效通过访问上面的url自行执行 - 但是我无法使用下面的Powershell脚本执行它。
我正在使用的Powershell脚本代码是:
$request = [System.Net.WebRequest]::Create("http://127.0.0.1/BackupCleanup.aspx")
$response = $request.GetResponse()
$response.Close()
我创建了这个带有PS1扩展名的文件,它在我的操作系统中正确显示(Windows 2008) - 我尝试通过右键单击并选择“使用Powershell运行”手动执行此任务,并将此作为任务安排 - 两者都无济于事。
我无法弄清楚为什么剧本不起作用 - 任何帮助都会非常感激。
答案 0 :(得分:0)
这是我用来使用IE调用网页的Powershell脚本。希望这也适合你。
Function NavigateTo([string] $url, [int] $delayTime = 100)
{
Write-Verbose "Navigating to $url"
$global:ie.Navigate($url)
WaitForPage $delayTime
}
Function WaitForPage([int] $delayTime = 100)
{
$loaded = $false
while ($loaded -eq $false) {
[System.Threading.Thread]::Sleep($delayTime)
#If the browser is not busy, the page is loaded
if (-not $global:ie.Busy)
{
$loaded = $true
}
}
$global:doc = $global:ie.Document
}
Function SetElementValueByName($name, $value, [int] $position = 0) {
if ($global:doc -eq $null) {
Write-Error "Document is null"
break
}
$elements = @($global:doc.getElementsByName($name))
if ($elements.Count -ne 0) {
$elements[$position].Value = $value
}
else {
Write-Warning "Couldn't find any element with name ""$name"""
}
}
Function ClickElementById($id)
{
$element = $global:doc.getElementById($id)
if ($element -ne $null) {
$element.Click()
WaitForPage
}
else {
Write-Error "Couldn't find element with id ""$id"""
break
}
}
Function ClickElementByName($name, [int] $position = 0)
{
if ($global:doc -eq $null) {
Write-Error "Document is null"
break
}
$elements = @($global:doc.getElementsByName($name))
if ($elements.Count -ne 0) {
$elements[$position].Click()
WaitForPage
}
else {
Write-Error "Couldn't find element with name ""$name"" at position ""$position"""
break
}
}
Function ClickElementByTagName($name, [int] $position = 0)
{
if ($global:doc -eq $null) {
Write-Error "Document is null"
break
}
$elements = @($global:doc.getElementsByTagName($name))
if ($elements.Count -ne 0) {
$elements[$position].Click()
WaitForPage
}
else {
Write-Error "Couldn't find element with tag name ""$name"" at position ""$position"""
break
}
}
#Entry point
# Setup references to IE
$global:ie = New-Object -com "InternetExplorer.Application"
$global:ie.Navigate("about:blank")
$global:ie.visible = $true
# Call the page
NavigateTo "http://127.0.0.1/BackupCleanup.aspx"
# Release resources
$global:ie.Quit()
$global:ie = $null
答案 1 :(得分:0)
我有同样的问题。我手动打开PowerShell并执行了我的脚本,我收到“无法加载WebPage.ps1,因为在此系统上禁用了运行脚本。”。
您必须允许脚本运行
在PowerShell中执行以下内容
Set-ExecutionPolicy RemoteSigned -Scope LocalMachine