我使用系统的DNS名称从数据库中提取信息。获得信息后,我将其设置为替换我不再需要的计算机名称部分。
然而,问题在于,一旦执行了替换,我就再也无法选择对象了 - 如果选择DnsName
它只返回空白,或者如果你看变量它只会显示{{1} }}。我尝试了@{Dnsname=computer123}
,但这也无效。
-ExpandProperty
当我使用下面的代码从SCCM中提取信息时,我也遇到了同样的问题,在function ExecuteSqlQuery($SQLQuery) {
$Server = "localhost"
$Database = "DB123"
$Array = @()
#Create and open a database connection
$Connection = New-Object System.Data.SQLClient.SQLConnection
$Connection.ConnectionString = "server='$Server';database='$Database';trusted_connection=true;"
$Connection.Open()
#Create a command object
$Command = New-Object System.Data.SQLClient.SQLCommand
$Command.Connection = $Connection
$Command.CommandText = $SQLQuery
#Execute the Command
$Reader = $Command.ExecuteReader()
$Counter = $Reader.FieldCount
#Parse the records
while ($Reader.Read()) {
for ($i =0; $i -lt $Counter; $i++) {
$Array += $Reader.GetValue($i)
}
}
# Close the database connection
$Connection.Close()
return $Array
}
$DNSsys = "SELECT DnsName FROM Systems"
$DNSName = ExecuteSqlQuery ($DNSsys)
$DNSName = $DNSName -replace '.123.com', '' -replace '.abc.com', ''
运行之前一切正常:
-replace
答案 0 :(得分:0)
这是接近它的方法,因此您不会运行字符串修饰符 - 替换整个对象,而只是该属性:
$Array += $Reader.GetValue($i) | Select-Object *,@{N="HostName";E={$_.DNSName -replace '.123.com', '' -replace '.abc.com', ''}}