Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String Out GridView(powershell 4)中是否有额外的空列?_String_Powershell_Powershell 4.0 - Fatal编程技术网

String Out GridView(powershell 4)中是否有额外的空列?

String Out GridView(powershell 4)中是否有额外的空列?,string,powershell,powershell-4.0,String,Powershell,Powershell 4.0,我有以下代码片段: 函数MyTestString { [字符串]$OutString $OutString='ABCDEFG' #$OutString | Out GridView-等待-标题“函数内字符串” 返回$OutString } $MyString=MyTestString | Out GridView-Wait-Title“get Extra Column”这将是额外的行而不是列,它是由函数体引起的。让我们检查一下 function MyTestString { [s

我有以下代码片段:

函数MyTestString
{   
[字符串]$OutString
$OutString='ABCDEFG'
#$OutString | Out GridView-等待-标题“函数内字符串”
返回$OutString
}

$MyString=MyTestString | Out GridView-Wait-Title“get Extra Column”
这将是额外的
行而不是列,它是由函数体引起的。让我们检查一下

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
现在我们正在取得进展。函数返回一个数组。内容如何

PS C:\> $o[0]


PS C:\> $o[1]
ABCDEFG
第0个元素只包含空。这看起来很奇怪,所以让我们确保Powershell使用的是严格模式(默认情况下它不会这样做。这是一个死脑筋的设计决策。)

让我们再看看函数体:

{   
    [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
}

这将是额外的
而不是列,这是由函数体引起的。让我们检查一下

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
现在我们正在取得进展。函数返回一个数组。内容如何

PS C:\> $o[0]


PS C:\> $o[1]
ABCDEFG
第0个元素只包含空。这看起来很奇怪,所以让我们确保Powershell使用的是严格模式(默认情况下它不会这样做。这是一个死脑筋的设计决策。)

让我们再看看函数体:

{   
    [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
}

你的解释和分析很好。非常感谢。你的解释和分析非常好。谢谢。