基本上我有以下代码:
$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()
当然,这时您不再具有包含文件对象的变量。