2017-10-18 29 views
0

我尝试添加百分号(“%”)追加到一个变量结束:PowerShell的:附加一个百分号可变

$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."

推测是因为它认为“+”运算符正在计算?我已经尝试了各种连续选项,但似乎无法做到正确。谁能帮忙?

回答

0

说明:

添加在你的输出" "把它作为一个字符串,然后将变量追加到结束。这意味着您可以将其从%切换到字符串,如Percent Remaining

希望这会有所帮助,你近了!

代码:中$diskpercentFree

$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 
       } 

结果举例:

PS C:\Windows\system32> $DiskpercentFree

57%

+1

我选择了$ diskpercentFree = [String] $ diskpercentFree1 +“$ Percent”。我确实尝试转换变量:“[String] $ diskpercentFree”。非常感谢! – JDGEEK

+0

@JDGEEK然后在技术上你应该接受其他答案,因为那是列出该方法的那个 – arco444

1

有几个方法可以做到这一点:

分配变量作为字符串:

$diskpercentFree = "$diskpercentFree1$Percent" 

演员的双重价值作为一个字符串:

$diskpercentFree = "$diskpercentFree1" + $Percent 
# Or 
$diskpercentFree = [string]$diskpercentFree1 + $Percent 

而且无需使用单独变量为%字符:

$diskpercentFree = "$diskpercentFree1%" 
0

我会建议字符串格式化如果你想输出值的百分比。例子:

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文档如何实现不同的结果。