所以我有这个:
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.