Brakowało mi polecenia w PS, które mogło by wyświetlić zdjęcie. Niestety nie mogłem znaleźć takiego polecenia i postanowiłem napisać funkcyjkę :)
[void][reflection.assembly]::LoadWithPartialName("System.Windows.Forms")
function Show-Image
{
[CmdletBinding(DefaultParametersetName="s")]
param(
[Parameter(ParameterSetName="f", Position=0,ValueFromPipeline=$true)]
[System.IO.FileInfo]$fileInfo,
[Parameter(ParameterSetName="s", Position=0,ValueFromPipeline=$true)]
[string]$filePath
)
begin{
[System.Windows.Forms.Application]::EnableVisualStyles()
$form = new-object Windows.Forms.Form
$pictureBox = new-object Windows.Forms.PictureBox
$form.controls.add($pictureBox)
$form.Add_Shown( { $form.Activate() } )
$form.StartPosition = [System.Windows.Forms.FormStartPosition]::CenterParent
}
process{
switch ($PsCmdlet.ParameterSetName)
{
"f" {
$file = $fileInfo
}
"s" {
$fileInfo =get-item $filePath
}
}
$fileName = $fileInfo.FullName
$img = [System.Drawing.Image]::Fromfile($fileInfo)
$form.Text = $fileName
$form.Width = $img.Size.Width
$form.Height = $img.Size.Height
$pictureBox.Width = $img.Size.Width
$pictureBox.Height = $img.Size.Height
$pictureBox.Image = $img
[void]$form.ShowDialog()
$img.Dispose()
}
end{
$pictureBox.Dispose()
$form.Dispose()
}
}
Wywołanie jest w formie pipu:
gi .\image.jpg |show-image
A tak wygląda funkcja w akcji:
Brak komentarzy:
Prześlij komentarz