我正在尝试使用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发布于 2020-09-17 22:28:36
如果要使用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,P11https://stackoverflow.com/questions/63937049
复制相似问题