簡體   English   中英

Out-GridView(powershell 4)中的額外空列?

[英]Extra empty column in the Out-GridView (powershell 4)?

我有以下代碼片段:

 function MyTestString { [string]$OutString $OutString = 'ABCDEFG' #$OutString | Out-GridView -Wait -Title "String inside function" return $OutString } $MyString = MyTestString | Out-GridView -Wait -Title "Getting Extra Column"

當我在Powershell中運行它時,我在網格視圖中得到一個額外的空列。 如果Out-GridView放在 function 內,則沒有空列。 Export-Clixml也發生了同樣的事情。

如何避免網格中的空列? 我想知道為什么我在GridView中得到一個空列。

這是額外空列的屏幕截圖:

謝謝您的幫助。

那將是額外的row而不是列,這是由 function 主體引起的。 讓我們檢查一下。

function MyTestString
{
    [string]$OutString
    $OutString = 'ABCDEFG'
    return $OutString
}

MyTestString     

ABCDEFG

好的,看起來直接調用會返回額外的行。 真的是這樣嗎?

$o=MyTestString
$o 

ABCDEFG

讓我們看看$o內部:

$o.GetType()
IsPublic IsSerial Name                                     BaseType
-------- -------- ----                                     --------
True     True     Object[]                                 System.Array

現在我們正在取得進展。 function 返回一個數組。 它的內容如何?

PS C:\> $o[0]


PS C:\> $o[1]
ABCDEFG

第零個元素除了空虛之外什么都不包含。 這看起來很奇怪,所以讓我們確保 Powershell 正在使用嚴格模式(默認情況下不會這樣做。這是一個腦殘的設計決定。)

Set-StrictMode -Version 'latest'
MyTestString
The variable '$OutString' cannot be retrieved because it has not been set.
At line:3 char:13
+     [string]$OutString
+             ~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (OutString:String) [], 
RuntimeException
    + FullyQualifiedErrorId : VariableIsUndefined

我們再來看看 function 本體:

{   
    [string]$OutString
    $OutString = 'ABCDEFG'
    #$OutString | Out-GridView -Wait -Title "String inside function"
    
    return $OutString
}

注意[string]部分? 這不是一個可變聲明。 它將其內容返回到管道。 當 Powershell 未處於嚴格模式時,它會返回一大堆空虛 - $o[0]處的空元素。 在嚴格模式下,Powershell 指出正在訪問未初始化的變量。

至於修復,請為OutString分配一個值 - 除非您嘗試使用參數。

function MyTestString
{   
    [string]$OutString = 'ABCDEFG'
    return $OutString
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM