Nejčastěji odpovídající uživatel
Prosím o pomoc s PS skriptem

Dotaz
-
Dobrý den,
chtěl bych se na někoho z Vás obrátit s prosbou o pomoc s Powershell skriptem, já už prostě nevím a jsem z toho na hlavu.
Jedná se o skript který vezme soubor z dane lokace, presune si ho do adresare ke zpracovani a uploadne vsechny soubory v danem adresari na dane URL.
Já musím ještě tento skript upravit tím způsobem, aby pokud je spusten bez parametru, aby se alespon pokusil uploadnout ty soubory, ktere jsou v not-copied, pokud tam nejake jsou. A dále aby pokud parametr existuje, ale neni soubor, tak aby skoncil s chybou.
V powershellu zatím začínám a opravdu netuším jak to do toho zakomponovat. Mohl by mi prosím někdo pomoc?
Skript zasílám níže
#########################################################
#Get list of servers to push new files to#
$server = "http://somenthing-path/service/analyzer-log/save-log-file"
#Nastavení kde jsou nové soubory a načtení jako proměné#
$newfilepath = "C:\myfolder"
$newfiles = Get-ChildItem $newfilepath | where {$_.name -like "*.txt*"}
$prodfolderpath = "$newfilepath\not_copied\"
$copied ="$newfilepath\copied\"
#Zjištění data a času#
$date = Get-Date -format yyyy_dd_MM
$time = get-date -format HH_mm_ss
$filename = $args[0]
$destination=$copied+$date+"-"+$time+".csv"
$production=$prodfolderpath+$date+"-"+$time+".txt"
#write-host $filename
function global:Test-and-create-dir ($FullPathName) {
if (!(test-path "$FullPathName"))
{
New-Item -type directory "$FullPathName" >$null
}
}
Test-and-create-dir("$newfilepath\vystup\");
Test-and-create-dir("$newfilepath\not_copied\");
Test-and-create-dir("$newfilepath\copied\");
#Testuje zda existuje log a výstupní adresář. Pokud ne, vytvoří ho#
if (!(Test-Path "$newfilepath\vystup\rptmove.log"))
{
New-Item -type file "$newfilepath\vystup\rptmove.log"
}
$log = "$newfilepath\vystup\rptmove.log"
copy-Item -path $filename -destination $production
$wc = new-object System.Net.WebClient
get-childitem $prodfolderpath | foreach {
$curfile=$_.Name
$fullcurfile=$prodfolderpath+$curfile
$output=$wc.UploadFile( $server, $fullcurfile )
if ($output[11] -eq 116 )
{
write-host("Upload uspesny: "+$fullcurfile)
$destfile=$copied+$curfile
move-Item -path $fullcurfile -destination $destfile
}
}
write-host("Konec UPLOADU")##########################################################
Odpovědi
-
Ano, definujete si tam svoji vlastní funkci, která má jeden parametr $FullPathName, ten se pak do funkce předává, když ji voláte, tedy:
Test-and-create-dir("$newfilepath\vystup\");
Test-and-create-dir("$newfilepath\not_copied\");
Test-and-create-dir("$newfilepath\copied\");
Funkce provede to, že vytvoří adresář v definované cestě. A řekl bych, že trochu zvláštním způsobem potlačuje výstup přesměrováním do $null.
Petr Bouška www.samuraj-cz.com
- Navržen jako odpověď Milos PuchtaModerator úterý 3. července 2012 11:20
- Označen jako odpověď Milos PuchtaModerator čtvrtek 19. července 2012 10:00
Všechny reakce
-
-
Skript je od nás, bohužel člověk co ho dělal už tu nepracuje a já do toho spadnul ani nevím jak. Moje zkušenosti jsou s Batch skriptama a z takto objektově orientováných skriptů nejsem opravdu moudrý.
Této části rozumím bez problému
#Get list of servers to push new files to#
$server = "http://somenthing-path/service/analyzer-log/save-log-file"
#Nastavení kde jsou nové soubory a načtení jako proměné#
$newfilepath = "C:\myfolder"
$newfiles = Get-ChildItem $newfilepath | where {$_.name -like "*.txt*"}
$prodfolderpath = "$newfilepath\not_copied\"
$copied ="$newfilepath\copied\"
#Zjištění data a času#
$date = Get-Date -format yyyy_dd_MM
$time = get-date -format HH_mm_ss
$filename = $args[0]
$destination=$copied+$date+"-"+$time+".csv"
$production=$prodfolderpath+$date+"-"+$time+".txt"
#write-host $filename
Zde se pouze specifikují proměné.
Poté následuje první problém
function global:Test-and-create-dir ($FullPathName) {
if (!(test-path "$FullPathName"))Pokuď tomu správně rozumím tak "test-and-create-dir" je pouze naše vlastní pojmenování funkce.. Nevím kde se vzala proměná ($FullPathName) . Pokuď není cesta $FullPathName
Provede New-Item -type directory "$FullPathName" >$null - Této části nerozumím
- Upravený DomnikEmp úterý 19. června 2012 15:53
-
Vypada to, ze ani tady ani v PowerGui http://powergui.org/thread.jspa?messageID=61138&tstart=0 nikdo nereaguje.
Doporucuji zkusit Powershell forum
http://social.technet.microsoft.com/Forums/en/winserverpowershell/threads
a take
-
Ano, definujete si tam svoji vlastní funkci, která má jeden parametr $FullPathName, ten se pak do funkce předává, když ji voláte, tedy:
Test-and-create-dir("$newfilepath\vystup\");
Test-and-create-dir("$newfilepath\not_copied\");
Test-and-create-dir("$newfilepath\copied\");
Funkce provede to, že vytvoří adresář v definované cestě. A řekl bych, že trochu zvláštním způsobem potlačuje výstup přesměrováním do $null.
Petr Bouška www.samuraj-cz.com
- Navržen jako odpověď Milos PuchtaModerator úterý 3. července 2012 11:20
- Označen jako odpověď Milos PuchtaModerator čtvrtek 19. července 2012 10:00
-
Kontrola jestli existuje soubor (tu tam už několikrát máte):
if((Test-Path "cesta") -eq $False) {
write-host "Doslo k chybe"
break
}
Nevím, jaký soubor chcete kontrolovat, když to dáte na začátek a místo cesta zadáte cestu k souboru, tak pokud nebude existovat, tak vypíše chybu a skončí.
Petr Bouška www.samuraj-cz.com
-