我没有看到它们之间的区别
... | Out-File -Append
Run Code Online (Sandbox Code Playgroud)
和
... | Out-File -Append -NoClobber
Run Code Online (Sandbox Code Playgroud)
两者都将信息附加到文件,两者都不覆盖内容,如果文件不存在则都创建文件.然而,所有在互联网上的例子使用的组合-Append和-NoClobber.
我错过了什么吗?
我在Powershell中创建了一个简单的后台作业:
Start-Job {"Hello"}
Run Code Online (Sandbox Code Playgroud)
我查看了Get-Job:
Id Name State HasMoreData Location Command
-- ---- ----- ----------- -------- -------
1 Job1 Completed True localhost "Hello"
Run Code Online (Sandbox Code Playgroud)
接下来,我只是收到输出,然后再次运行Get-Job
Receive-Job 1
Get-Job
Run Code Online (Sandbox Code Playgroud)
我可以看到"HasMoreData"现在是假的,因为我没有指定-keep参数.
但是:似乎无论什么时候我开始一个工作,而不是Start-Job或者Invoke-Command,这个"HasMoreData"参数不会改为False.
例子:
Get-WMIObject win32_bios -AsJob
Test-Connection . -AsJob
Run Code Online (Sandbox Code Playgroud)
我是否可以绕过此(错误)行为,以便属性HasMoreData切换为False,除非我指定-keep?
谢谢!
更新:它似乎适用于使用-AsJob参数进行的所有调用.如果你跑
Start-Job {Test-Connection .}
Run Code Online (Sandbox Code Playgroud)
它工作("HasMoreData"后变为False Receive-Job),但是
Test-Connection . -AsJob
Run Code Online (Sandbox Code Playgroud)
才不是.
我尝试做的很简单:创建一个具有一些属性的自定义对象,然后定义属性(列)的"组"以在Select-Object中使用.让我澄清一下:
$props = @{"Mary"=1;"Jane"=2;"Frank"=3;"John"=5;"Brenda"=6}
$obj = New-Object PSObject $props
Run Code Online (Sandbox Code Playgroud)
我现在有一个带有一些虚假数据的自定义对象.我现在想要做的是
$obj | select Male
$obj | select Female
Run Code Online (Sandbox Code Playgroud)
而我曾想过会做的伎俩是这样的:
$obj | Add-Member PropertySet "Male" @("Frank","John")
$obj | Add-Member PropertySet "Female" @("Mary","Jane","Brenda")
Run Code Online (Sandbox Code Playgroud)
它不起作用 - 我收到此错误:
Add-Member : Cannot convert the "System.Object[]" value of type
"System.Object[]" to type "System.Collections.ObjectModel.Collection`1[System.String]".
Run Code Online (Sandbox Code Playgroud)
我想我应该提供另一个对象类型而不是我的数组Add-Member,但我不确定我应该怎么做.
有任何人对此有经验吗?
重要提示:我在Powershell 2上,我在各种网站上看到它有一个不允许设置默认属性的错误.这不是我想做的 - 我想创建一个自定义属性集而不是默认属性集 - 但可能是这个bug也阻止了我得到我想要的东西.