Powershell “计算”;发明;新的解决方案

Powershell “计算”;发明;新的解决方案,powershell,Powershell,我在我的一个powershell脚本中遇到了一个奇怪的行为。 我在该脚本中使用此选项: $GUI_ProgressBar.Value = (($n)/($f_count*$d_count*$w_count)*100) $n++ Write-Host "f_count= "$f_count Write-Host "d_count= "$d_count Write-Host "w_count= "$w_count Write-Host "Bruch= "($f_count*$d_count*$w_c

我在我的一个powershell脚本中遇到了一个奇怪的行为。 我在该脚本中使用此选项:

$GUI_ProgressBar.Value = (($n)/($f_count*$d_count*$w_count)*100)
$n++
Write-Host "f_count= "$f_count
Write-Host "d_count= "$d_count
Write-Host "w_count= "$w_count
Write-Host "Bruch= "($f_count*$d_count*$w_count)
Write-Host "n= "$n
该部件的输出(经过几个循环后)为:

当直接在shell中使用时,代码工作正常


你知道为什么“Bruch”这个词是关着的吗?

在我看来,
$f_count
可能是一个字符串。参考,因为这实际上是PowerShell的一项功能。如果左侧运算符是一个字符串,该字符串乘以右侧的int,则该字符串将被复制为右侧运算符的值的次数


如果您需要$f_count在某些区域成为字符串,但对于此特定要求,需要它具有
int
值,可以将其强制转换(
[int]$f_count
),或者向变量添加一个加号,该加号也会将其转换为int(
+$f_count

,以配合ChristopherW的回答,因为他是对的,你可以在这里看到区别。正如他所说,左边的值决定了如何对待操作员

PS C:\Windows\system32>“5”*5#5是一个字符串,因为它在引号中
55555
PS C:\Windows\system32>[int]“5”*5#5是一个数字,因为它被强制转换为一。
25
PS C:\Windows\system32>$f_count.GetType().Fullname
系统字符串

最后,如果您查看
$f_count
的类型,您将得到的响应是
System.String
,这将解释您看到的内容。

看起来$f_count是[String]是的,f_count是一个字符串。。。我自己解决了这个问题,但感谢您的提示:)此外,我将添加“最后,如果您查看$f_count的类型,您将得到的响应是System.String,它将解释您看到的内容。”-我的defaut调试查询的一部分:D
f_count=  1
d_count=  17
w_count=  6
Bruch=  111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
n=  52