Powershell:将百分号附加到变量的末尾
Powershell: appending a percent sign to the end of a variable
我正在尝试添加百分号 ("%") 以附加到变量:
$disk = Get-WmiObject -ComputerName $Computer -Class Win32_LogicalDisk -Filter "Caption = 'D:'"
If (!($disk)) {
$DiskpercentFree = "n/a"
}
Else {
$deviceID = $disk.DeviceID
[float]$size = $disk.Size;
[float]$freespace = $disk.FreeSpace;
$diskpercentFree1 = [Math]::Round(($freespace / $size) * 100)
$Percent = "%"
$diskpercentFree = $diskpercentFree1 + $Percent
}
但我得到的只是:
Cannot convert value "%" to type "System.Double". Error: "Input string
was not in a correct format."
大概是因为它认为“+”运算符在进行计算?我尝试了各种 concat 选项,但似乎无法正确处理。有人可以帮忙吗?
有几种方法可以做到这一点:
将变量分配为字符串:
$diskpercentFree = "$diskpercentFree1$Percent"
将双精度值转换为字符串:
$diskpercentFree = "$diskpercentFree1" + $Percent
# Or
$diskpercentFree = [string]$diskpercentFree1 + $Percent
并且无需为 %
字符使用单独的变量:
$diskpercentFree = "$diskpercentFree1%"
解释:
在输出周围添加 " "
以将其视为字符串,然后将变量附加到末尾。这意味着您可以将其从 %
切换为 Percent Remaining
.
等字符串
希望这对您有所帮助,您已经很接近了!
代码:
$disk = Get-WmiObject -ComputerName $Computer -Class Win32_LogicalDisk -Filter "Caption = 'D:'"
If (!($disk)) {
$DiskpercentFree = "n/a"
}
Else {
$deviceID = $disk.DeviceID
[float]$size = $disk.Size;
[float]$freespace = $disk.FreeSpace;
$diskpercentFree1 = [Math]::Round(($freespace / $size) * 100)
$Percent = '%'
$diskpercentFree = "$diskpercentFree1" + $Percent
}
$diskpercentFree
的示例结果:
PS C:\Windows\system32> $DiskpercentFree
57%
如果您想以百分比形式输出值,我会推荐字符串格式。示例:
PS C:\> "{0:P}" -f 1
100.00 %
PS C:\> "{0:P1}" -f .986
98.6 %
PS C:\> "{0:P0}" -f .75
75 %
-f
的文档在 about_Operators page 中,那里有关于如何获得各种结果的 .NET 文档的链接。
我正在尝试添加百分号 ("%") 以附加到变量:
$disk = Get-WmiObject -ComputerName $Computer -Class Win32_LogicalDisk -Filter "Caption = 'D:'"
If (!($disk)) {
$DiskpercentFree = "n/a"
}
Else {
$deviceID = $disk.DeviceID
[float]$size = $disk.Size;
[float]$freespace = $disk.FreeSpace;
$diskpercentFree1 = [Math]::Round(($freespace / $size) * 100)
$Percent = "%"
$diskpercentFree = $diskpercentFree1 + $Percent
}
但我得到的只是:
Cannot convert value "%" to type "System.Double". Error: "Input string was not in a correct format."
大概是因为它认为“+”运算符在进行计算?我尝试了各种 concat 选项,但似乎无法正确处理。有人可以帮忙吗?
有几种方法可以做到这一点:
将变量分配为字符串:
$diskpercentFree = "$diskpercentFree1$Percent"
将双精度值转换为字符串:
$diskpercentFree = "$diskpercentFree1" + $Percent
# Or
$diskpercentFree = [string]$diskpercentFree1 + $Percent
并且无需为 %
字符使用单独的变量:
$diskpercentFree = "$diskpercentFree1%"
解释:
在输出周围添加 " "
以将其视为字符串,然后将变量附加到末尾。这意味着您可以将其从 %
切换为 Percent Remaining
.
希望这对您有所帮助,您已经很接近了!
代码:
$disk = Get-WmiObject -ComputerName $Computer -Class Win32_LogicalDisk -Filter "Caption = 'D:'"
If (!($disk)) {
$DiskpercentFree = "n/a"
}
Else {
$deviceID = $disk.DeviceID
[float]$size = $disk.Size;
[float]$freespace = $disk.FreeSpace;
$diskpercentFree1 = [Math]::Round(($freespace / $size) * 100)
$Percent = '%'
$diskpercentFree = "$diskpercentFree1" + $Percent
}
$diskpercentFree
的示例结果:
PS C:\Windows\system32> $DiskpercentFree
57%
如果您想以百分比形式输出值,我会推荐字符串格式。示例:
PS C:\> "{0:P}" -f 1
100.00 %
PS C:\> "{0:P1}" -f .986
98.6 %
PS C:\> "{0:P0}" -f .75
75 %
-f
的文档在 about_Operators page 中,那里有关于如何获得各种结果的 .NET 文档的链接。