2014-01-30 79 views
0

我有一个查询csv的脚本,这很好。我正在使用参数来输入我正在查找的用户名。输出是用户已登录到的所有机器的完整列表。我修改了相同的脚本,只显示了csv中的最后一个条目。而不是有两个脚本,我想添加一个参数来显示所有结果或只是最后一个。我对参数相当陌生,所以我不太确定我应该如何处理这个问题。不同输出的参数

Param(
[Parameter(Position=0,mandatory=$true)] 
[string]$Username 
) 

$csv = Import-Csv \\share\dfs\Users\Logon\Logon.csv 
$csv | ? {$_.username -eq $Username} | % { 

New-Object -TypeName PSCustomObject -Property @{ 
ComputerName = $_.computername 
"Logon Date" = $_.date 
} 
} 

在CSV最后一项

Param(
[Parameter(Position=0,mandatory=$true)] 
[string]$Username 
) 

$csv = Import-Csv \\share\dfs\Users\Logon\Logon.csv 
$array = $csv | ? {$_.username -eq $Username} | % { 

New-Object -TypeName PSCustomObject -Property @{ 
ComputerName = $_.computername 
"Logon Date" = $_.date 
} 
} 
$array[-1] 

回答

1

您可以添加switch参数,这是$false默认,并$true如果指定其调用脚本的时候修改剧本。根据此switch参数的值,您可以输出所有项目,或者只是最后项目。

param(
    [Parameter(Position=0,mandatory=$true)] 
    [string]$Username 
    # Added a new switch parameter. Switch parameters are $false by default. 
    # If switch parameter is present, then it will be $true. 
    , [switch] $ShowLastOnly 
) 

$csv = Import-Csv \\share\dfs\Users\Logon\Logon.csv 
$array = $csv | ? {$_.username -eq $Username} | % { 

New-Object -TypeName PSCustomObject -Property @{ 
ComputerName = $_.computername 
"Logon Date" = $_.date 
} 
} 

# If $ShowLastOnly is $true, then ... 
if ($ShowLastOnly) { 
    $array[-1]; # Output only the last item 
} 
else { 
    $array; # Else ... output all items 
} 
+1

甜我喜欢你的过程中,我的是有点多余。 – JoeRod

+0

这是关于代码重复的:) –

0

这个工作,不知道是否有人有更好的解决方案

Param(
[Parameter(Position=0,mandatory=$true)] 
[string]$Username, 
[switch]$Last 
) 

if($Last){ 
$csv = Import-Csv \\corporate\dfs\Users\Logon\Logon.log 
$array = $csv | ? {$_.username -eq $Username} | % { 

New-Object -TypeName PSCustomObject -Property @{ 
ComputerName = $_.computername 
"Logon Date" = $_.date 
} 
} 


$array[-1] 
} 

else 
{ 

$csv = Import-Csv \\corporate\dfs\Users\Logon\Logon.log 
$csv | ? {$_.username -eq $Username} | % { 

New-Object -TypeName PSCustomObject -Property @{ 
ComputerName = $_.computername 
"Logon Date" = $_.date 
} 
} 

}