PowerShell ASP: Using Invoke-Command with New-PSSession



In order to use the Invoke-Command with the New-PSSession cmdlet you will need to have the proper credentials set.

The credential parameter in Powershell taks a PSCredential object. Normally you would prompt a user to enter the information in a dialog and then save the response as a PSCredential object using the Get-Credential cmdlet. Of course in PowerShell ASP that’s not an option. We can get around this by just setting the credentials manually in a PowerShell script:

$securePassword = ConvertTo-SecureString "Password" -AsPlainText -force 
$credential = New-Object System.Management.Automation.PsCredential("domain\username",$securePassword)

After speicfiying your credentails you can then use them in your call to create a New-PSSession Using the PowerShell script below.

$session = New-PSSession -computername hostname -credential $cred

Below is an example of a complete PowerShell ASP page:


<% 
$securePassword = ConvertTo-SecureString "Password" -AsPlainText -force 
$credential = New-Object System.Management.Automation.PsCredential("domain\username",$securePassword)  
$session = New-PSSession -computername hostname -credential $cred 
$command = {ls} 
$res = Invoke-Command -session $session -scriptblock $command 
foreach($item in $res){ 	
	Write-Host("Mode: " + $item.Mode) 
	Write-Host("Last Write Time: " + $item.LastWriteTime) 
	Write-Host("Length: " + $item.Length) 
	Write-Host("Name: " + $item.Name) 
	Write-Host("<hr/>") 
}	 
%>