现有答案是正确的,但有时您实际上并没有使用 aWrite-Output
或 a明确返回某些内容return
,但函数结果中存在一些神秘值。这可能是内置函数的输出,例如New-Item
PS C:\temp> function ContrivedFolderMakerFunction {
>> $folderName = [DateTime]::Now.ToFileTime()
>> $folderPath = Join-Path -Path . -ChildPath $folderName
>> New-Item -Path $folderPath -ItemType Directory
>> return $true
>> }
PS C:\temp> $result = ContrivedFolderMakerFunction
PS C:\temp> $result
Directory: C:\temp
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 2/9/2020 4:32 PM 132257575335253136
True
目录创建的所有额外噪音都被收集并在输出中发出。缓解这种情况的简单方法是添加| Out-Null
到New-Item
语句的末尾,或者您可以将结果分配给变量而不使用该变量。它看起来像这样......
PS C:\temp> function ContrivedFolderMakerFunction {
>> $folderName = [DateTime]::Now.ToFileTime()
>> $folderPath = Join-Path -Path . -ChildPath $folderName
>> New-Item -Path $folderPath -ItemType Directory | Out-Null
>> # -or-
>> $throwaway = New-Item -Path $folderPath -ItemType Directory
>> return $true
>> }
PS C:\temp> $result = ContrivedFolderMakerFunction
PS C:\temp> $result
True
New-Item
可能是其中比较有名的,但其他的包括所有的StringBuilder.Append*()
方法,以及SqlDataAdapter.Fill()
方法。