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
放在函数内部,则没有空列。 Export-Clixml
.
也发生了同样的事情
如何避免网格中出现空列?我想知道为什么我在 GridView
.
中得到一个空列
这是多余的空列的屏幕截图:
感谢您的帮助。
那将是额外的 row
而不是列,这是由函数体引起的。让我们检查一下。
function MyTestString
{
[string]$OutString
$OutString = 'ABCDEFG'
return $OutString
}
MyTestString
ABCDEFG
好吧,貌似直接调用了return的额外行。真的是这样吗?
$o=MyTestString
$o
ABCDEFG
让我们看看里面$o
:
$o.GetType()
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True Object[] System.Array
现在我们有所进展。函数 return 是一个数组。内容如何?
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
我们再看看函数体:
{
[string]$OutString
$OutString = 'ABCDEFG'
#$OutString | Out-GridView -Wait -Title "String inside function"
return $OutString
}
注意到 [string]
部分了吗?那不是可变声明。它将 return 其内容传输到管道。当 Powershell 不处于严格模式时,它 return 是一无是处 - $o[0]
处的空元素。在严格模式下,Powershell 指出正在访问未初始化的变量。
至于修复,请为 OutString
赋值 - 除非您尝试使用参数。
function MyTestString
{
[string]$OutString = 'ABCDEFG'
return $OutString
}
我有以下代码片段:
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
放在函数内部,则没有空列。 Export-Clixml
.
如何避免网格中出现空列?我想知道为什么我在 GridView
.
这是多余的空列的屏幕截图:
感谢您的帮助。
那将是额外的 row
而不是列,这是由函数体引起的。让我们检查一下。
function MyTestString
{
[string]$OutString
$OutString = 'ABCDEFG'
return $OutString
}
MyTestString
ABCDEFG
好吧,貌似直接调用了return的额外行。真的是这样吗?
$o=MyTestString
$o
ABCDEFG
让我们看看里面$o
:
$o.GetType()
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True Object[] System.Array
现在我们有所进展。函数 return 是一个数组。内容如何?
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
我们再看看函数体:
{
[string]$OutString
$OutString = 'ABCDEFG'
#$OutString | Out-GridView -Wait -Title "String inside function"
return $OutString
}
注意到 [string]
部分了吗?那不是可变声明。它将 return 其内容传输到管道。当 Powershell 不处于严格模式时,它 return 是一无是处 - $o[0]
处的空元素。在严格模式下,Powershell 指出正在访问未初始化的变量。
至于修复,请为 OutString
赋值 - 除非您尝试使用参数。
function MyTestString
{
[string]$OutString = 'ABCDEFG'
return $OutString
}