0
我發現在嘗試使用PowerShell版本3或4時在此頁面上出現語法錯誤的任何人都可以幫助解決問題嗎?{foreach循環中使用的PowerShell語法錯誤
http://jeffwouters.nl/index.php/2012/06/scvmm-custom-inventory-about-vm-and-vhd-with-powershell/
$VMS = Get-VM -VMMServer localhost | Sort-Object -Property Name -Descending
「<HTML><HEAD><TITLE>VM Inventory</TITLE></HEAD><BODY><TABLE BORDER=1>」 | Out-File $Env:Temp\VMInventory.html
「<TR><TD>VM Name</TD><TD>VM Memory</TD><TD>VHD Name</TD><TD>VHD Length</TD><TD>VHD Maximum</TD><TD>VHD Available</TD><TD>VHD Free %</TD></TR>」 | Out-File $Env:Temp\VMInventory.html -Append
foreach ($VM in $VMS)
{
「<TR><TD>」+$VM.Name+」</TD><TD>」+$VM.Memory+」MB</TD><TD>.</TD><TD>.</TD><TD>. </TD><TD>.</TD><TD>.</TD></TR>」 | Out-File $Env:Temp\VMInventory.html -Append
foreach ($VHD in $VM.VirtualHarddisks)
{
$VHDLength = ($VHD.Size/1GB)
$VHDSize = 「{0:N2}」 -f $VHDLength
if ($VHD.VHDType -eq 「DynamicallyExpanding」)
{
$BackgroundColor = 「#FF0000″
$VHDMaximumSize = 「{0:N2}」 -f ($VHD.MaximumSize/1GB)
$VHDAvailable = 「{0:N2}」 -f (($VHD.MaximumSize – $VHD.Size) /1GB)
$VHDFree = 「{0:N2}」 -f (100 – (($VHD.Size * 100)/$VHD.MaximumSize))
「<TR><TD>.</TD><TD>.</TD>
<TD bgcolor=」+$BackgroundColor+」>」+$VHD.Name+」</TD>
<TD bgcolor=」+$BackgroundColor+」>」+$VHDSize+」GB</TD>
<TD bgcolor=」+$BackgroundColor+」>」+$VHDMaximumSize+」</TD>
<TD bgcolor=」+$BackgroundColor+」>」+$VHDAvailable+」</TD>
<TD bgcolor=」+$BackgroundColor+」>」+$VHDFree+」 %</TD></TR>」 | Out-File $Env:Temp\VMInventory.html -Append
}
else
{
「<TR><TD>.</TD><TD>.</TD><TD>」+$VHD.Name+」</TD><TD>」+$VHDSize+」GB</TD><TD>.< /TD><TD>.</TD><TD>.</TD></TR>」 | Out-File $Env:Temp\VMInventory.html -Append
}
}
「<TR>」 | Out-File $Env:Temp\vminventory.html -Append
}
「</TABLE><BODY></HTML>」 | Out-File $Env:Temp\VMInventory.html -Append
Invoke-Expression $Env:Temp\vminventory.html
是否更換所有這些「智能引號」定期引號幫助嗎?我意識到格式化問題不是你的,但更容易格式化代碼可能會有所幫助。 –
這裏至少有三個不同的字符用於智能引用。 '''',''''和'''。 Wouters先生需要修復他的網站,以免損壞他發佈的代碼。 –
它不僅僅是引號。中間有一個字符串,需要轉義/處理的嵌套引號以'「
回答
唯一的問題似乎是智能引號。我也花時間縮進代碼,因爲它使它更具可讀性。我無法自己運行,但語法現在看起來正確。
如果你覺得到它的代碼看起來像它會從創建自定義對象,並使用
ConvertTo-HTML
受益。是的,你會失去顏色格式,但它只是一個供參考。來源
2015-04-24 21:47:38 Matt
你真的不需要在HTML中轉義那些引號。 '
@BaconBits一樣有效。可以肯定地刪除。代碼似乎沒有他們罰款....是的,這只是聰明的引號。 – Matt
夠公平的。無論哪種方式,對於比'Export-Csv'稍微有用的東西來說,這是一個巨大的混亂,並且只比ConvertTo-Html或Out-GridView更適中。 –
這是那些捲曲的引號。嘗試用正常的直引號替換它們。 「」與 「」
的Mac OSX
ALT +]產生一個開口單個捲曲引號( ')
ALT + SHIFT +]產生一個閉合單個捲曲引號(')
ALT + [產生一個開口雙捲曲引號(「)
ALT + SHIFT + [產生右雙捲曲引號(」)
個視窗
ALT + 0145產生的開口單個捲曲引號( ')
ALT + 0146產生一個閉合單個捲曲引號(')
ALT + 0147產生的開口雙捲曲引號(「)
ALT + 0148產生結束的雙捲曲引號(」)
來源
2015-04-24 22:01:03
非常有用的信息瑞恩。 –
這裏的問題是不使用智能引號s本身; Powershell支持對字符串使用智能報價
U+201C
和U+201D
。問題是具體線路:與一個有效的Unicode
'LEFT DOUBLE QUOTATION MARK' (U+201C)
開始的字符串,但試圖與不被識別爲一個字符串報價的Unicode字符'DOUBLE PRIME' (U+2033)
結束它。從PowerShell的規範中的相關規則是:
和單引號的字符串:
來源
2015-04-25 11:23:55 Duncan
相關問題