基本上我有以下代码:

$file = $web.GetFile("Pages/default.aspx")
$file.CheckOut()

而且我想知道是否仍然可以使用管道和等效于this的powershell将其重写为:
$web.GetFile("Pages/default.aspx") | $this.CheckOut()

当我尝试这个我得到错误:



我也尝试使用$_而不是$this,但遇到相同的错误。

最佳答案

您要查找的是$_,它表示管道中的当前对象。但是,您只能在需要管道输入的命令的脚本块中访问$_,例如:

$web.GetFile("Pages/default.aspx") | Foreach-Object -Process {$_.Checkout()}

但是,有Foreach-Object cmdlet {Foreach和%}的别名,并且-Process是默认参数,因此可以简化为:
$web.GetFile("Pages/default.aspx") | Foreach  {$_.Checkout()}

另外一点,GetFile调用似乎返回单个文件,因此在这种情况下,以下是最简单的方法:
$web.GetFile("Pages/default.aspx").Checkout()

当然,这时您不再具有包含文件对象的变量。

10-01 15:32