基本上我有这个代码:
$file = $web.GetFile("Pages/default.aspx")
$file.CheckOut()
Run Code Online (Sandbox Code Playgroud)
我想知道是否有使用管道和powershell相当于this重写它:
$web.GetFile("Pages/default.aspx") | $this.CheckOut()
Run Code Online (Sandbox Code Playgroud)
当我尝试这个时,我得到错误:
表达式仅允许作为管道的第一个元素.
我也尝试使用$_而不是$this但得到了相同的错误.
Kei*_*ill 12
您正在寻找的是$_它代表管道中的当前对象.但是,您只能访问$_接受管道输入的命令的scriptblock,例如:
$web.GetFile("Pages/default.aspx") | Foreach-Object -Process {$_.Checkout()}
Run Code Online (Sandbox Code Playgroud)
但是,Foreach-Object cmdlet {Foreach和%}存在别名,而-Process是默认参数,因此可以简化为:
$web.GetFile("Pages/default.aspx") | Foreach {$_.Checkout()}
Run Code Online (Sandbox Code Playgroud)
另一点,GetFile调用似乎返回单个文件,因此在这种情况下,以下是最简单的方法:
$web.GetFile("Pages/default.aspx").Checkout()
Run Code Online (Sandbox Code Playgroud)
当然,此时您不再拥有包含文件对象的变量.
Sta*_*ing 11
实际上在少数情况下有一个$ this.您可以创建ScriptProperty或ScriptMethod并将其附加到对象,$ this将是原始对象.然后你可以在类型文件中定义它们(我建议使用模块EZOut,它可以让生活更轻松),这样当你看到那种类型时,你就会得到那种方法.
例如:
$Web | Add-Member ScriptMethod EditFile { $this.Checkout() }
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助
| 归档时间: |
|
| 查看次数: |
8155 次 |
| 最近记录: |