我尝试使用 ConvertFrom-String 将数据从 cli 转换为 powershell 对象,但是当我这样做时,十进制数字会自动解析为日期(如下面的 P4 列所示)。我该如何防止这种情况?
plesk bin php_handler --list | ConvertFrom-String | select P2,P4,P11 | where{$_.P11 -like 'enabled'}
P2 P4 P11
-- -- ---
fastcgi-5 5/2/2017 12:00:00 AM enabled
fastcgi-5.3 5/3/2029 12:00:00 AM enabled
fastcgi-5.4 5/4/1945 12:00:00 AM enabled
fastcgi-5.5 5/5/1938 12:00:00 AM enabled
fastcgi-5.6 5/6/1940 12:00:00 AM enabled
fastcgi-7.0 7.0.33 enabled
fastcgi-7.1 7/1/1930 12:00:00 AM enabled
isapi-5 5/2/2017 12:00:00 AM enabled
如果要使用,您将需要使用模板或使用计算属性来操作属性ConvertFrom-String
:
使用计算属性:
plesk bin php_handler --list | ConvertFrom-String |
Select-Object P2,@{n='P4';e={if ($_.P4 -is [datetime]) { $_.P4.ToString('M.d.yyyy')} else {$_.P4}}},P11 |
Where P11 -eq 'enabled'
您可以采取不同的方法并使用Foreach-Object
使用自定义属性代替:
plesk bin php_handler --list | Where {$data = -split $_; $data[10] -eq 'enabled'} |
Foreach-Object { [pscustomobject]@{P1=$data[0];P4=$data[3];P11=$data[10]} }
您可以创建自己的函数,这将为您提供几乎无限的定制:
function ConvertTo-MyObject {
param([parameter(ValueFromPipeline)]$InputObject)
process {
$i = 1
$hash = [ordered]@{}
-split $input | Foreach-Object { $hash[$("P"+$i++)] = $_ }
[pscustomobject]$hash
}
}
plesk bin php_handler --list | ConvertTo-MyObject |
Where P11 -eq 'enabled' | Select P2,P4,P11
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)