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