2017-08-21 16 views
0

私はこのスクリプトで無効なパスエラーを取得:呼び出す方法 - 変数を使用して関数またはスクリプトを呼び出す式?

$buildZIP= 'starmatic' 
echo $buildZIP 
$command = ”\\XXXXXXXXXX\L$\Gopi_Prod_App\ToZipNew.ps1 $buildZIP” 
Invoke-Expression -Command $command 

これはToZipNew.ps1です:私は取得しています

Param(
    [Parameter(Position=1, Mandatory=$true)] 
    [ValidateNotNullOrEmpty()] 
    [string]$build 
) 
echo "$build" 
$S = "L:\Gopi_Prod_App\$build\App_Data\*" 
$D = "\Gopi_Prod_App\Starmatic_UI.zip" 

echo $S 
echo $D 

Get-ChildItem "$S" | Compress-Archive -DestinationPath "$D" -Verbose 
#Compress-Archive -Path "$S" -CompressionLevel Fastest -DestinationPath "$D" 

がエラー:

 
Compress-Archive : The path 'L:\Gopi_Prod_App' either does not exist or is not a 
valid file system path. 
At \\XXXXXXXXXXX\L$\Gopi_Prod_App\ToZipNew.ps1:13 char:45 
+ ... t-ChildItem "$S" | Compress-Archive -DestinationPath "$D" -Verbose 
+      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    + CategoryInfo   : InvalidArgument: (L:\Gopi_Prod_App:String) [Compress-Archive], InvalidOperationException 
    + FullyQualifiedErrorId : ArchiveCmdletPathNotFound,Compress-Archive 

答えて

2

Invoke-Expressionはどんな仕事あなたのためalmost always the wrong toolです手元にある。また、リモートのホストで実際にスクリプトを実行したいと思うように見えます。ただし、Invoke-Expressionステートメントは、リモート共有からスクリプトを読み取って、を実行しています。

Invoke-Command -Computer 'XXXXXXXXXX' -ScriptBlock { 
    & 'L:\Gopi_Prod_App\ToZipNew.ps1' $using:buildZIP 
} 

変更

$command = ”\\XXXXXXXXXX\L$\Gopi_Prod_App\ToZipNew.ps1 $buildZIP” 
Invoke-Expression -Command $command 

リモートホストXXXXXXXXXX上でスクリプトを実行します。

ネットワークドライブL:として共有\\XXXXXXXXXX\L$を接続し、そのドライブからスクリプトを呼び出すローカルでスクリプトを実行したい場合:

New-PSDrive -Name 'L' -PSProvider FileSystem -Root '\\XXXXXXXXXX\L$' -Persist 
& 'L:\Gopi_Prod_App\ToZipNew.ps1' $buildZIP 
Remove-PSDrive -Name 'L' 
+0

優れ、 これは私の問題のための完璧なソリューションである、非常にありがとうございました多く。 – Gopi

関連する問題