Pěkně mne podusilo vrácení hodnot z funkce v PowerShellu zpět do DOS-CMD scriptu.
Když se použije pro návrat hodnoty z funkce "return $hodnota", tak je výstup automaticky oříznut podle velikosti DOS-CMD okna, ve kterém to bylo spuštěno, což při předávání hodnot ve scriptu dál je docela problém ;o) Vzpomněl jsem si na problémy s vracením hodnot, které popisoval Martin Žugec
http://martinzugec.blogspot.com/2008/08/returning-values-from-fuctions-in.html ale postrčilo mne až
http://weblogs.asp.net/soever/archive/2008/12/09/powershell-output-capturing-and-text-wrapping-strange-quirks-solved.aspx
a správně je tedy vracet pomocí "$hodnota | write-host" ("write-host $hodnota" nefunguje)
Spuštění LogStatus.cmd v DOS-CMD okně o velikosti Screen Buffer Size 80x50 uloží funkce Get-LogStatusKO do LogStatus.csv data zalomené na dva řádky. Pokud se totéž spustí v třeba 200x50, tak bude vše správně na jednom řádku.
----- LogStatus.cmd -----
setlocalset logIn=.\LogStatus.txt
set logOut=.\LogStatus.csv
for /f "tokens=1,2 delims=;" %%i in ('powershell.exe -NoLogo -NoProfile -NonInteractive -Command "& '.\LogStatus.ps1'" """%log%"""') do (
if NOT exist "%logOut%" echo "Name","Value" > "%logOut%"
echo "%%i","%%j" > "%logOut%"
)
----- LogStatus.cmd -----
----- LogStatus.ps1 -----
Function Get-LogStatusOK {
param([string]$File)
$OutPut = 'data;1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm'
# vraci spravnou, nezalomenou, hodnotu
$OutPut | write-Host
}
Function Get-LogStatusKO {
param([string]$File)
$OutPut = 'data;1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm'
# vraci zalomenou hodnotu podle delky okna
return $OutPut
}
Get-LogStatusOK -File $args[0]
Get-LogStatusKO -File $args[0]
----- LogStatus.ps1 -----
----- LogStatus.csv -----
"Name","Value"
"data","1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm" "data","1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm12"
"34567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm",""
----- LogStatus.csv -----