PowerShell中函数内$(get-item...)写法的原理及使用疑问
PowerShell 里
$(...) 语法详解及变量赋值方法 一、$(...) 的作用逻辑
这是 PowerShell 的子表达式运算符,核心作用是在需要单个值的上下文里,先执行一段命令/脚本块,再把执行结果嵌入到当前位置。
在函数中写 $(Get-Item ...),本质是让函数返回 Get-Item 命令的执行结果——因为 PowerShell 函数默认会将所有未被捕获的输出作为返回值。举个实际例子:
function Get-MyFile { $(Get-Item .\test.txt) }
调用该函数时,返回的就是 test.txt 的文件对象,和直接执行 Get-Item .\test.txt 的效果完全一致。
二、搜索 $(get-item 无结果的原因
搜索引擎会过滤$(这类特殊符号,导致关键词失效。换个搜索词即可,比如搜索 PowerShell 子表达式运算符 $(),就能找到官方文档和相关教程。
三、将执行结果保存为变量的方法
直接赋值函数返回值
把函数的输出直接存到变量里:$myFile = Get-MyFile此时
$myFile就存储了Get-Item命令返回的文件对象。函数内部先存储变量(便于内部复用)
如果需要在函数内对结果做进一步处理,可以先把Get-Item的结果存到函数内部变量:function Get-MyFile { $file = $(Get-Item .\test.txt) # 这里可以对 $file 执行修改属性、输出详情等操作 $file # PowerShell 自动将未捕获的变量输出作为函数返回值,无需显式写 return } $myFile = Get-MyFile
额外提示
其实这个场景下$(...)是可以省略的,直接写 Get-Item ... 效果完全相同——因为函数中命令的输出本身就会被作为返回值。比如:
function Get-MyFile { Get-Item .\test.txt }
和带$(...)的版本没有任何功能差异,加不加仅取决于个人编码习惯。
内容的提问来源于stack exchange,提问作者Martin R
相关产品推荐
相关产品推荐

