whoisearth
whoisearth

Reputation: 4170

powershell - Invoke-Command : The value of the FilePath parameter must be a Windows PowerShell script file

I have a re-usable script that I've been using with success calling a remote ps1 file but now I'm trying to call a remote batch file and I get the following error message -

Invoke-Command : The value of the FilePath parameter must be a Windows
PowerShell script file. Enter the path to a file with a .ps1 file name
extension and try the command again.

This is the script -

#Admin Account 
$AdminUser = "domain\svc_account" 
$Password = Get-Content D:\scripts\pass\crd-appacct.txt | convertto-securestring
$Credential = new-object -typename System.Management.Automation.PSCredential -argumentlist $AdminUser, $Password 
$FileName = "runme.bat"
$ItemLocation = "D:\path\to\bat\"

#Invoke Script Remotely
Invoke-Command -ComputerName Servername -filepath "$ItemLocation$FileName" -Authentication CredSSP -Credential $Credential

Upvotes: 1

Views: 8228

Answers (1)

user4003407
user4003407

Reputation: 22122

You should use -ScriptBlock parameter instead of -FilePath:

Invoke-Command -ComputerName Servername -ScriptBlock {& "$using:ItemLocation$using:FileName"} -Authentication CredSSP -Credential $Credential

Or if you are using PowerShell v2, which does not have $using:VariableName syntax:

Invoke-Command -ComputerName Servername -ScriptBlock {param($ItemLocation,$FileName) & "$ItemLocation$FileName"} -ArgumentList $ItemLocation,$FileName -Authentication CredSSP -Credential $Credential

Upvotes: 4

Related Questions