如果我走
$c = Resolve-DnsName facebook.com -Type TXT -Server '8.8.8.8'
Run Code Online (Sandbox Code Playgroud)
当我进入时$c
我得到
Name Type TTL Section Strings
---- ---- --- ------- -------
facebook.com TXT 7200 Answer {v=spf1 redirect=_spf.facebook.com}
facebook.com TXT 7200 Answer {google-site-verification=A2WZWCNQHrGV_TW
wKh6KHY90tY0SHZo_RnyMJoDaG0s}
facebook.com TXT 7200 Answer {google-site-verification=wdH5DTJTc9AYNwV
unSVFeK0hYDGUIEOGb-RReU6pJlY}
Run Code Online (Sandbox Code Playgroud)
我该如何扩展$c.strings
?
我知道我可以得到扩展的字符串并失去其余的
Resolve-DnsName facebook.com -Type TXT -Server '8.8.8.8' | Select-Object -ExpandProperty strings
Run Code Online (Sandbox Code Playgroud)
如何扩展整个答案?
您可以使用计算属性将Strings 属性从重新定义string[]
为string
:
Resolve-DnsName google.com -Type TXT -Server '8.8.8.8' |
Select-Object Name, Type, TTL, Section, @{ N = 'Strings'; E = { [string] $_.Strings }} |
Format-Table
Run Code Online (Sandbox Code Playgroud)
这将导致:
Name Type TTL Section Strings
---- ---- --- ------- -------
google.com TXT 3600 Answer docusign=05958488-....
google.com TXT 3600 Answer google-site-verifi....
google.com TXT 3600 Answer docusign=1b0a6754-....
google.com TXT 3600 Answer google-site-verifi....
google.com TXT 3600 Answer globalsign-smime-d....
google.com TXT 3600 Answer MS=E4A68B9AB2BB967....
google.com TXT 3600 Answer apple-domain-verif....
google.com TXT 3600 Answer v=spf1 include:_sp....
google.com TXT 3600 Answer facebook-domain-ve....
Run Code Online (Sandbox Code Playgroud)
如果 Strings 属性中有多个字符串,则使用上面的代码将使用$OFS
(Out Field Separator)连接字符串,默认情况下是一个空格:
Name Type TTL Section Strings
---- ---- --- ------- -------
google.com TXT 3339 Answer docusign=4752-4e... docusign=4752-4e...
Run Code Online (Sandbox Code Playgroud)
如果您想要多行字符串,则可以使用Out-String
,但这需要首先.Trim()
输出并使用-Wrap
onFormat-Table
才能正确显示。
使用硬编码值 ( ) 的代码示例docusign=05958488
:
Resolve-DnsName google.com -Type TXT -Server '8.8.8.8' |
Select-Object Name, Type, TTL, Section, @{
Name = 'Strings'
Expression = { ('docusign=05958488', 'docusign=05958488' | Out-String).Trim() }
} | Format-Table -Wrap
Run Code Online (Sandbox Code Playgroud)
您还可以使用-join
运算符将字符串与CRLF
( `r`n
) 连接起来以获得多行字符串:
Resolve-DnsName google.com -Type TXT -Server '8.8.8.8' |
Select-Object Name, Type, TTL, Section, @{
Name = 'Strings'
Expression = { 'docusign=05958488', 'docusign=05958488' -join "`r`n" }
} | Format-Table -Wrap
Run Code Online (Sandbox Code Playgroud)
这两个例子的结果是:
Name Type TTL Section Strings
---- ---- --- ------- -------
google.com TXT 3574 Answer docusign=05958488
docusign=05958488
google.com TXT 3574 Answer docusign=05958488
docusign=05958488
google.com TXT 3574 Answer docusign=05958488
docusign=05958488
Run Code Online (Sandbox Code Playgroud)
如果您想要一种可以处理两种情况的解决方案,即只有一个值的字符串和具有多个值的字符串,您可以使用如下所示的方法:
$result = Resolve-DnsName google.com -Type TXT -Server '8.8.8.8'
# Add random values to Strings for testing
$result.ForEach({ $_.Strings += Get-Random })
# Code logic
$result = foreach($element in $result) {
$out = [ordered]@{
Name = $element.Name
Type = $element.Type
TTL = $element.TTL
Section = $element.Section
}
foreach($e in $element.Strings) {
$out.Strings = $e
# output one object per string
[pscustomobject] $out
}
}
$result | Format-Table
Run Code Online (Sandbox Code Playgroud)
上述逻辑将在 Strings 属性中为每个元素创建一个新对象。输出将是:
TTL Section Name Type Strings
--- ------- ---- ---- -------
3444 Answer google.com TXT apple-domain-verificatio...
3444 Answer google.com TXT 1419241945
3444 Answer google.com TXT MS=E4A68B9AB2BB9670BCE15...
3444 Answer google.com TXT 463070462
3444 Answer google.com TXT facebook-domain-verifica...
3444 Answer google.com TXT 958788674
3444 Answer google.com TXT google-site-verification...
3444 Answer google.com TXT 1623605637
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
454 次 |
最近记录: |