2013-07-11 6 views
0

Кажется, что каждый, кто отвечает на этот вопрос, обходит проблему, указывая, что либо A. Не имеют значения; или B. Используйте версию -scriptBlock.Передача аргумента в -FilePath в Powershell

Вот что я хочу: я хочу запустить сценарий PowerShell с моей локальной машины на удаленной машине. Мне нужно передать аргумент или параметр.

Вот что я делаю:

$responseObject = Invoke-Command -ComputerName MININT-OU9K10R -FilePath C:\Users\Documents\RemoteProofOfConcept\validatePath.ps1 -ArgumentList $filename -AsJob 

Я хочу передать $filename в validatePath.ps1 сценарий, и я не могу понять, как это сделать.

Может кто-нибудь, пожалуйста, покажите мне, как это сделать, или скажите мне, что я делаю неправильно?

Ни одна из этих ссылок не помогли:

Get script directory in PowerShell when script is invoked with Invoke-Command

Powershell Invoke-Command with-FilePath Gives ItemNotFoundException

How do I pass named parameters with Invoke-Command?

+0

Нет, это пункт. Этот файл находится на моей локальной машине. Если бы это было на удаленной машине, я понял, что могу использовать '-scriptblock', но это не так. Я хочу запускать локальные скрипты на удаленных компьютерах и иметь возможность передавать параметры этим скриптам. – BlackHatSamurai

ответ

1

Это работает на PowerShell v3. Вы на V2?

9# gc .\foo.ps1 
param($myarg) 

hostname 
"parameter value of myarg is $myarg" 
10# $filename = "c:\foo.txt" 
11# Invoke-Command Beagle2 -FilePath .\foo.ps1 -ArgumentList $filename 
BEAGLE2 
parameter value of myarg is c:\foo.txt 

BTW, foo.ps1 не существует на удаленном компьютере. Он переносится PowerShell на удаленный компьютер для выполнения. Теперь, если $filename содержит локальный компьютерный путь, я не уверен, как это будет работать на удаленном компьютере, если оно не указывает на файл, общий для обоих компьютеров.

+0

Я считаю, что это работает. Спасибо за помощь! – BlackHatSamurai