相关疑难解决方法(0)

PowerShell 函数是否返回值由什么决定?

我试图弄清楚是什么决定了是否从 PowerShell 函数返回一个值,并且我遇到了一些奇怪的情况。about_return 文档说:

在 PowerShell 中,每个语句的结果都会作为输出返回,即使没有包含 Return 关键字的语句也是如此。

但这似乎掩盖了细节。如果我运行这个:

function My-Function {
    1
    [System.Console]::WriteLine("Hello")
    $null
    $true
    $false
    0
    2
}
Run Code Online (Sandbox Code Playgroud)

运行此命令将返回一个数组(并打印“Hello”):

1
True
False
0
2
Run Code Online (Sandbox Code Playgroud)

这意味着它$null不会自动返回。然后我尝试递增,因为我正在函数中使用它:

function My-Function {
    $n = 1
    $n
    $n++
    ($n++)
    -join @(1, 2, 3)
    (-join @(1, 2, 3))
}
Run Code Online (Sandbox Code Playgroud)

返回:

1
2
123
123
Run Code Online (Sandbox Code Playgroud)

所以,$n$n++退回了,但($n++)不是吗?但与另一个运算符 ( -join) 相比,每种情况都是相同的。为什么将括号括起来$n++会阻止它被返回,并且为什么其他运算符没有相同的行为?这更加令人困惑,因为=运算符似乎以相反的方式工作:

function My-Function {
    ($n = 1)
    $n
    $n++
    ($n++)
} …
Run Code Online (Sandbox Code Playgroud)

powershell function powershell-7.0

11
推荐指数
1
解决办法
2176
查看次数

为什么 Range.BorderAround 向控制台发出“True”?

使用 BorderAround 会向控制台发出“True”。

$range = $sum_wksht.Range('B{0}:G{0}' -f ($crow))
$range.BorderAround(1, -4138)
Run Code Online (Sandbox Code Playgroud)

这可以通过使用以下方法之一来克服。

$wasted = $range.BorderAround(1, -4138)
[void]$range.BorderAround(1, -4138)
Run Code Online (Sandbox Code Playgroud)

为什么需要这个?我没有正确创建范围吗?有更好的解决方法吗?

excel powershell output

2
推荐指数
1
解决办法
264
查看次数

标签 统计

powershell ×2

excel ×1

function ×1

output ×1

powershell-7.0 ×1