【发布时间】:2018-04-22 21:44:48
【问题描述】:
我一直在编写一个脚本,该脚本将采用 IP/DNS 并创建一个 2 列输出。当它在 powershell 内部工作时,只要我尝试导出到 CSV,它就会返回 system.object。我该如何解决?这是我的代码:
function Resolve-IPDNS {
[CmdletBinding()]
param(
[Parameter(Mandatory = $true)]
[string[]]$IPDNS,
[string]$DNSServer = "1.1.1.1"
)#param
BEGIN {}
Process {
foreach ($addrs in $IPDNS ) {
#Resolve IP or DNS
IF ($addrs -as [ipaddress]) {
$resolve_params = @{'Name' = $addrs
'Server' = $DNSServer
'Type' = 'PTR'}
} ELSE {
$resolve_params = @{'Name' = $addrs
'Server' = $DNSServer
'Type' = 'A'}
}
$resolve = Resolve-DnsName @resolve_params
#Create props
IF ($addrs -as [ipaddress]) {
$props = @{'IP' = $resolve.Name
'DNS' = $resolve.NameHost}
} ELSE {
$props = @{'IP' = $resolve.IPAddress
'DNS' = $resolve.Name}
}#IF
#Output data
$obj = New-Object -TypeName psobject -Property $props
Write-Output $obj
}#foreach
}#Process
END {}
}#function
Resolve-IPDNS
所以如果尝试提供 bbc.com 我会得到结果:
IP DNS
-- ---
{151.101.0.81, 151.101.64.81, 151.101.128.81, 151.101.192.81} {bbc.com, bbc.com, bbc.com, bbc.com}
有没有办法在保持对象方式的同时展开/展开?
【问题讨论】:
-
通常,您需要
Export-CliXml/Import-CliXml而不是CSV 格式,以便在序列化/反序列化后近似保留原始类型。目前尚不清楚您的具体问题是什么;请直接更新您的问题以澄清。
标签: powershell object expand unwrap