首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Powershell convertfrom-string自动将decimal解析为日期。我如何防止这种情况发生?

Powershell convertfrom-string自动将decimal解析为日期。我如何防止这种情况发生?
EN

Stack Overflow用户
提问于 2020-09-17 19:27:11
回答 1查看 159关注 0票数 0

我正在尝试使用ConvertFrom-String将数据从cli转换为powershell对象,但是当我这样做时,十进制数字会自动解析为日期(如下面的列P4所示)。我如何防止这种情况发生?

plesk bin php_handler --list | ConvertFrom-String | select P2,P4,P11 | where{$_.P11 -like 'enabled'}

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

发布于 2020-09-17 22:28:36

如果要使用ConvertFrom-String,则需要使用模板或使用计算属性操作属性

使用计算属性的

代码语言:javascript
复制
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与自定义属性一起使用:

代码语言:javascript
复制
plesk bin php_handler --list | Where {$data = -split $_; $data[10] -eq 'enabled'} |
    Foreach-Object { [pscustomobject]@{P1=$data[0];P4=$data[3];P11=$data[10]} }

您可以创建自己的函数,这将为您提供几乎无限的自定义:

代码语言:javascript
复制
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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63937049

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档