Powershell blev igen dagens helt

Jeg stod over for den “store” opgave at skulle arkivere ca. 400 sider på en gammel hjemmeside. Det kørte på en Sharepoint og havde desværre ikke en direkte mulighed for at blive eksporteret til noget efterfølgende brugbart data.

Jeg fik “lov” til at lave et pdf print af samtlige sider. Tak tror jeg nok. :o)

Så en kombination af dette script: http://gallery.technet.microsoft.com/scriptcenter/1f08824a-c9db-415e-83b1-2c49ebda195c

og så lidt søgning på google, endte jeg op med dette script:

Scriptet kræver en installation af PDFCreator, og det kan hentes her:
http://www.pdfforge.org/pdfcreator

[System.Reflection.Assembly]::LoadWithPartialName("System.web") | out-null

$OUTPUT_FOLDER="C:\pdf\"

#PDF Creator settings
$ErrorActionPreference="Stop"
$WarningPreference="Stop"
$PDFINFOPATH="HKCU:\Software\PDFCreator\Program"
$AUTOSAVEFNAMEPROPERTY="AutoSaveFilename"
$AUTOSAVEDIRPROPERTY="AutoSaveDirectory"
$USEAUTOSAVEPROPERTY="UseAutoSave"

try{
get-itemproperty -path $PDFINFOPATH -name $AUTOSAVEDIRPROPERTY |out-null
set-itemproperty -path $PDFINFOPATH -name $AUTOSAVEDIRPROPERTY -value $OUTPUT_FOLDER |out-null
}catch{
new-itemproperty -path $PDFINFOPATH -name $AUTOSAVEDIRPROPERTY -value $OUTPUT_FOLDER |out-null
}
try{
get-itemproperty -path $PDFINFOPATH -name $USEAUTOSAVEPROPERTY |out-null
set-itemproperty -path $PDFINFOPATH -name $USEAUTOSAVEPROPERTY -value "1" |out-null
}catch{
new-itemproperty -path $PDFINFOPATH -name $USEAUTOSAVEPROPERTY -value "1" |out-null
}

#File to load URLS from... (1 on each line)
$data = Get-Content .\urls.txt

foreach ($url in $data){
#Make nice looking filename
$Decode = [System.Web.HttpUtility]::UrlDecode($url)
$filename = $Decode.split("/")[-1]
$cleaned = $filename -replace '[^\w -]', [String]::Empty
$slug = ((-split $cleaned) -join "-").ToLower()

try{
$ie=new-object -com internetexplorer.application
$ie.navigate($url)
$ie.visible = $true
#depending upon the website sleep parameters here onwards may need adjustment
start-sleep -seconds 2
try{
set-itemproperty -path $PDFINFOPATH -name $AUTOSAVEFNAMEPROPERTY -value "$slug.pdf" | out-null
}catch{
echo "---===Fejlet===---"
echo $url
}
start-sleep -seconds 2
$ie.execWB(6,2)
start-sleep -seconds 2
$ie.quit()
} catch [Exception] {
echo "---===Exception===---"
echo $_.Exception.Message
echo $url
}
}

Dette indlæg blev udgivet i Diverse, PowerShell og tagget , , . Bogmærk permalinket.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *