在 Powershell 的计算字段中使用函数?
Using a function in a calculated field in 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
我只是希望代码更短!我在用电脑!
因为你没有展示你是如何调用我在评论中提到的修改函数的,我认为你没有正确使用它。 [grin] 你的函数是......相当奇特,所以我重写了它以更正常的方式工作。
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.
所以我有这个:
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
我只是希望代码更短!我在用电脑!
因为你没有展示你是如何调用我在评论中提到的修改函数的,我认为你没有正确使用它。 [grin] 你的函数是......相当奇特,所以我重写了它以更正常的方式工作。
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.