# encoding: ascii
# api: powershell
# title: Open-ISEFile
# description: This cmdlet allows you to open a file in a new file tab within your current Powershell tab. You can pass a collection of files to open more than one file.
# version: 1.0
# type: function
# author: Tome Tanasovski
# license: CC0
# function: Open-ISEFile
# x-poshcode-id: 1930
# x-archived: 2012-09-05T18:15:14
# x-published: 2012-06-20T18:57:00
#
#
#Requires -Version 2.0
function Open-ISEFile {
<#
.NOTES
Name: Open-ISEFile
Author: Tome Tanasovski
Created: 6/20/2010
Version: 1.0
.SYNOPSIS
Open a new file in ISE
.DESCRIPTION
This cmdlet allows you to open a file in a new file tab within your current Powershell tab. You can pass a collection of files to open more than one file.
.PARAMETER Path
Specifies a path to one or more files. Wildcards are permitted. The default location is the current directory (.).
.EXAMPLE
Open-ISEFile -Path $profile
Opens your profile in ISE.
.EXAMPLE
dir *.ps1 |Open-ISEFile
Opens up all ps1 files in the current directory as new file tabs in ISE.
.EXAMPLE
Open-ISEFile *.ps1
Opens up all ps1 files in the current directory as new file tabs in ISE.
.EXAMPLE
$file = Open-ISEFile "c:\file1.ps1" -PassThru
Opens up file1.ps1 in ISE. The command uses the passthru parameter to generate an object that represents a file in ISE.
.INPUTS
System.String
.OUTPUTS
None or Microsoft.PowerShell.Host.ISE.ISEFile
When you use the PassThru parameter, Open-ISEFile returns a Microsoft.PowerShell.Host.ISE.ISEFile for each file opened. Otherwise, this cmdlet does not generate any output.
.LINK
http://powertoe.wordpress.com
#>
param(
[Parameter(Mandatory = $true, Position = 0, ValueFromPipeline=$true)]
[string[]] $Path,
[Parameter(Mandatory = $false)]
[switch] $PassThru
)
BEGIN {
if (!$psise) {
"You are not in a Powershell ISE window"
}
}
PROCESS {
if ($psise) {
foreach ($file in $Path) {
if (Test-Path $file) {
Get-ChildItem $file | foreach {
$file = $psise.CurrentPowerShellTab.Files.Add($_.fullname)
if ($PassThru) {
$file
}
}
}
}
}
}
}