对于某些脚本,我需要有一个由计算属性组成的输出.
例如,对于ip.txt中的ip地址列表,我想知道它们是否响应ping.所以我尝试以下命令:
Get-Content .\ip.txt | Select-Object $_,@{Name="ping?";Expression={Test-Connection $_ -Quiet -Count 1}}
Run Code Online (Sandbox Code Playgroud)
但是我得到一个错误,不管我在scriptblock表达式中做了什么.
错误(法语,抱歉):
Select-Object : Paramètre Null. Le type attendu doit être l'un des suivants : {System.String, System.Management.Automation.ScriptBlock}.
Au niveau de ligne : 1 Caractère : 37
+ Get-Content .\ip.txt | Select-Object <<<< $_,@{Name="ping?";Expression={Test-Connection $_ -Quiet -Count 1}}
+ CategoryInfo : InvalidArgument: (:) [Select-Object], NotSupportedException
+ FullyQualifiedErrorId : DictionaryKeyUnknownType,Microsoft.PowerShell.Commands.SelectObjectCommand
我以前在一些脚本中使用了"计算属性",但是使用了目录对象.为什么它不能用于字符串?
在我的一个脚本中,我注意到当我将自定义对象存储在一个数组中时,如果我修改对象属性,所有更改也会在数组中进行。
有没有一种简单的方法来按值存储对象?
我想避免每次我想存储它的值时重新创建一个新对象。
例子:
PS D:\wamp\www> $obj = New-Module -ScriptBlock { $var1="value1"; Export-ModuleMember -Variable * } -AsCustomObject
PS D:\wamp\www> $arr = @()
PS D:\wamp\www> $arr += $obj
PS D:\wamp\www> $arr
var1
----
value1
PS D:\wamp\www> $obj.var1 = "newvalue"
PS D:\wamp\www> $arr += $obj
PS D:\wamp\www> $arr
var1
----
newvalue
newvalue
PS D:\wamp\www> $obj2 = $obj.Psobject.Copy()
PS D:\wamp\www> $obj2.var1 = "other"
PS D:\wamp\www> $arr += $obj2
PS D:\wamp\www> $arr
var1
----
other
other
Run Code Online (Sandbox Code Playgroud) 在一些网络资源的帮助下,我正在学习go语言并编写我的第一个程序:
package main
import (
"fmt"
"crypto/sha512"
"encoding/base64"
)
func main() {
ba := []byte("HelloWorld")
hasher := sha512.New()
hasher.Write(ba)
sha := base64.StdEncoding.EncodeToString(hasher.Sum(nil))
fmt.Printf(sha)
}
Run Code Online (Sandbox Code Playgroud)
它编译并按预期工作,但我不能自己编写这段代码,因为如果我查看sha256的Go包参考,我看不到Write()和Sum()方法.在哪里可以找到这种信息?也许,我不是在阅读好的文件,或者有一种我没有看到的"继承".