不同输出的参数

时间:2014-01-30 14:48:14

标签: powershell parameters

我有一个查询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] 

2 个答案:

答案 0 :(得分: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 :(得分: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
 } 
}

}