gpt4 book ai didi

powershell - 如何调用表达式来调用带有变量的函数或脚本?

转载 作者:行者123 更新时间:2023-12-02 22:12:59 25 4
gpt4 key购买 nike

我使用此脚本收到无效路径错误:

$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"

我得到的错误:

压缩存档:路径“L:\Gopi_Prod_App”要么不存在,要么不是
有效的文件系统路径。
在\\XXXXXXXXXXXX\L$\Gopi_Prod_App\ToZipNew.ps1:13 字符:45
+ ... t-ChildItem "$S"|压缩归档 -DestinationPath "$D"-Verbose
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (L:\Gopi_Prod_App:String) [Compress-Archive], InvalidOperationException
+ FullQualifiedErrorId : ArchiveCmdletPathNotFound,Compress-Archive

最佳答案

Invoke-Expressionalmost always the wrong tool无论你手头有什么工作。此外,在我看来,您实际上想在远程主机上运行脚本。但是,您的 Invoke-Expression语句从远程共享读取脚本并在本地执行。

改变

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

进入

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

在远程主机 XXXXXXXXXX 上运行脚本。

如果您确实想在本地运行脚本,请连接共享 \\XXXXXXXXXX\L$作为网络驱动器 L:并从该驱动器调用脚本:

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

关于powershell - 如何调用表达式来调用带有变量的函数或脚本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45803445/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com