在 Powershell 的计算字段中使用函数?



所以我有这个:

get-ADUser -SearchRoot 'boogers.com/Locations/Kleenex' | 
Where-Object { $_.TITLE -ne 'Snot' } | 
Select LastName,FirstName,Description,SamAccountName,Department,TITLE, @{Name='bs_value';Expression=@{Name='TITLE'; Expression={(Get-Culture).TextInfo.ToTitleCase($_.Title.ToLower())}}

它工作得很好,直到,哦,我不知道,我想要另一个计算字段......然后它变得太长了!

所以我写了一个函数:

function tc($name, $str) {
return @{Name=$name; Expression={(Get-Culture).TextInfo.ToTitleCase($str.ToLower())}}
}

似乎很合理,不是吗?

但是如果我运行该函数:

$bob = tc 'Title' 'bob'

我得到:

Name                           Value
----                           -----
Expression                     (Get-Culture).TextInfo.ToTitleCase($str.ToLower())
Name                           Title

而不是。。。

Name                           Value
----                           -----
Expression                     "Bob"
Name                           Title

我只是希望代码更短! 我正在使用电脑!

由于您没有展示如何调用我在评论中提到的修改后的函数,因此我认为您没有正确使用它。[咧嘴笑]你的功能是...相当奇特,所以我重写了它以更正常的方式工作。

function ConvertTo-TitleCase ([string]$InString)
{
(Get-Culture).TextInfo.ToTitleCase($InString.ToLower())
}
Get-LocalUser |
Where-Object {
$_.Name -notmatch "Admin|Guest|Home|$env:USERNAME"
} | 
Select-Object -Property Name, FullName, Enabled,
@{Name='bs_value';Expression={ConvertTo-TitleCase -InString $_.Description}}

我的本地使用列表的输出...

Name   FullName        Enabled bs_value                                   
----   --------        ------- --------                                   
22     2 Digit 2          True The Digit 2 Twice                          
TooToo Too Also Too       True The Word For Also, Repeated Twice          
ToTo   To Thataway To     True The Destination Designator, Two Times.     
Tutu   Tutu Dress Tutu    True The Ballet Apparel For Ladies.             
TwoTwo Two Number Two     True Repeating The Name Of The Number After One.

相关内容

  • 没有找到相关文章

最新更新