所以,我实际上不相信我传递给参数的字符串值是问题,我认为这是我的for
循环如何显示它。
Function Get-Users{
[cmdletbinding()]
Param(
[Parameter(Mandatory=$false,
ValueFromPipeLine=$true,
ValueFromPipeLineByPropertyName=$true,
HelpMessage='Enter Computer Name')]
[Alias('CN','Computer','Name')]
[ValidateLength(1,15)]
[string]$ComputerName = $env:COMPUTERNAME,
[Parameter(Mandatory=$false,
ValueFromPipeLine=$true,
ValueFromPipeLineByPropertyName=$true)]
[String]$Exclude
)
$UNC = Get-ChildItem -Path \\$ComputerName\c$\Users -Exclude $Exclude -Directory | Select-Object -ExpandProperty Name | Sort-Object -Descending
for($i=0; $i -lt $UNC.Count; $i++){
"$($i): $($UNC[$i])" }
""
$SS = Read-Host -Prompt "Enter # of user(s)"
$s = $SS -split " "
foreach($user in $UNC[$s]){
"$User" }
}
我觉得这应该像我在控制台中运行它时那样工作,就像这样Get-ChildItem -Path C:\users -Exclude "Abraham" -Directory
:它只是排除了我的目录列表。
即使参数中没有指定任何内容,它仍然可以正常运行:Get-ChildItem -Path C:\users -Exclude "" -Directory
关于列出所有目录,但是当我使用自制参数传递它时,它无法正确显示。我得到的是以下内容:
PS > Get-Users -Exclude Abraham
0: P
Enter # of user(s):
什么时候应该:
PS > Get-Users -Exclude Abraham
0: Public
Enter # of user(s):
有人可以告诉我为什么它不显示完整的目录名称吗?
请注意,当-Exclude
未指定参数时,它将列出所有目录。