Здравствуйте, kochetkov.vladimir, Вы писали:
KV>Здравствуйте, octo47, Вы писали:
O>>Вот подумал я тут — данный пример хорошо показывает гениальность unix утилит и идеи конвеера в данных задачах, чем зоопарк .Net (Java, Python, Ruby).
KV>Долго думал над выделенным...
Читать как .Net или Java или Python или Ruby. Ибо под каждым из них есть что-то подобное PS.
O>>3. Для понимания этого скрипта нет необходимости знать что такое Byte[] New-Object как его сделать delete
, и вообще что такое память массив и, о ужас, GC.
KV>Если выбирать между программистом и админом, то я скорее админ, причем бывший
Тут я лажанул, хотел написать так, что местным программерам понятнее было + не было времени на прояснение пары вопросов, чтобы написать в true-posh стиле
posh вполне позволяет использовать и конвейерно-"функциональный" стиль:
KV>KV>new-object -com Shell.Application | $_.NameSpace($attachmentFullName), $_.NameSpace($temporaryPath) | $_[1].CopyHere($_[0].Items())
KV>
Хм. А как будет выглядеть?
for i in `ls *.txt`; do
cat "$i" | gzip | gpg --encrypt --recipient xxxxx@gmail.com - > "$i".gz.enc && wipe "$i"
&& echo "Catch your file, man\!" | mail -s test -a "$i".gz.enc xxxxx@gmail.com
done;
O>>4. Когда ты захочешь не умереть от нехватки памяти (например если аттач 500Мб на 128Мб машине), то тебе придется думать, а админы не любят думать
. По этому у меня работает конструкция pg_dump -s schema1 -s schema2 | gzip > dump.gz для базы в 30Гб, а у тебя это не сработает. Придется мудрить с while(read < total) { readToBuffer; writerToFile; }.
KV>Сработает, причем один-в-один, и мудрить не придется 
??? Я как-то не так понял этот кусок кода?
$attachmentSize = $scriptContent.Length - $attachmentPosition - 14
[Byte[]]$attachmentContent = New-Object Byte[] $attachmentSize
[Array]::Copy($scriptContent, $attachmentPosition, $attachmentContent, 0, $attachmentSize)
[System.IO.File]::WriteAllBytes($attachmentFullName, $attachmentContent)
KV>PS — не язык. Просто до него на винде не было полноценных средств администрирования, которые бы позволяли так гибко использовать средства своего синтаксиса. Posh позволяет использовать как привычный админам стиль конвейеров, так и построчную императивщину с использованием всех возможностей .NET. Первый вариант — тру вей для написания скриптов posh, второй — для его командлетов.
Я и не говорил, что это язык. Это инструмент, который требует знания языка и платформы .Net