如何使用PowerShell将包含变量的代码段声明为变量以避免代码重复?

如何使用PowerShell将包含变量的代码段声明为变量以避免代码重复?,powershell,Powershell,代码段(Get Content$|FullName | Select Object-First 1)被调用三次。目的是将其声明为变量,以避免代码重复 getchilditem“$env:ChocolateyInstall\lib\eclipse.*”-Recurse-Filter“eclipseinnstall.zip.txt”| ForEach对象{if((Get Content$.FullName | Select Object-First 1)-匹配“eclipse”)-和(Test Pa

代码段
(Get Content$|FullName | Select Object-First 1)
被调用三次。目的是将其声明为变量,以避免代码重复

getchilditem“$env:ChocolateyInstall\lib\eclipse.*”-Recurse-Filter“eclipseinnstall.zip.txt”|
ForEach对象{if((Get Content$.FullName | Select Object-First 1)-匹配“eclipse”)-和(Test Path-Path(Get Content$.FullName | Select Object-First 1)){Remove Item-Recurse-Force(Get Content$.FullName | Select Object-First 1)}
尝试

$a=(获取内容$\全名|选择对象-第一个1)
获取子项“$env:ChocolateyInstall\lib\eclipse.*”-递归-筛选“eclipseInstall.zip.txt”|
ForEach对象{if($a-match“eclipse”)-和(Test Path-Path(Get Content$\ FullName | Select Object-First 1)){Write Host“hello”}
结果

PS C:\Windows\system32>。“C:\temp\powershelltest\test.ps1”
获取内容:无法将参数绑定到参数“Path”,因为它为null。
在C:\temp\powershelltest\test.ps1:1字符:19
+$a=(获取内容$\全名|选择对象-第一个1)
+                   ~~~~~~~~~~~
+CategoryInfo:InvalidData:(:)[Get Content],ParameterBindingValidationException
+FullyQualifiedErrorId:ParameterArgumentValidationErrorNullNotAllowed,Microsoft.PowerShell.Commands.GetContentC
奥曼德

您可以将一段代码分配给如下变量:

$a = { Get-Content $_.FullName | Select-Object -First 1 }

然后随时使用
和$a
执行代码段(您需要通过管道将一个对象连接到该代码段)。不过,我不确定这在您的示例中是否必要。

从这一点上看,您实际上想做什么并不清楚。你能编辑问题并解释一下吗?出现错误的原因是您试图访问
$\ucode>,但由于您尚未创建管道,因此该管道不存在。@arco444我正在尝试避免代码重复。同一个代码段,即
(Get Content$\u.FullName | Select Object-First 1)
此时被调用三次。问题已经更新。好的,但是为什么?剧本的真正目的是什么?您的分配正确,但您尝试分配的内容不正确。i、 e.使用
$a=(…)
是可以的,但是如果不首先对其进行管道连接,就无法直接执行
获取内容$\ Fullname