第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在雙引號字符串中使用對象的屬性?

如何在雙引號字符串中使用對象的屬性?

如何在雙引號字符串中使用對象的屬性?我有以下代碼:$DatabaseSettings = @();$NewDatabaseSetting = "" | select DatabaseName, DataFile, LogFile, LiveBackupPath;$NewDatabaseSetting. DatabaseName = "LiveEmployees_PD";$NewDatabaseSetting.DataFile = "LiveEmployees_PD_Data";$NewDatabaseSetting.LogFile = "LiveEmployees_PD_Log"; $NewDatabaseSetting.LiveBackupPath = '\\LiveServer\LiveEmployeesBackups';$DatabaseSettings += $NewDatabaseSetting;當我嘗試使用字符串執(zhí)行命令中的一個屬性時:& "$SQlBackupExePath\SQLBackupC.exe" -I $InstanceName -SQL `   "RESTORE DATABASE $DatabaseSettings[0].DatabaseName FROM DISK = '$tempPath\$LatestFullBackupFile' WITH NORECOVERY, REPLACE,    MOVE '$DataFileName' TO '$DataFilegroupFolder\$DataFileName.mdf', MOVE '$LogFileName' TO '$LogFilegroupFolder\$LogFileName.ldf'"它只使用$DatabaseSettings而不是$DatabaseSettings[0].DatabaseName,這是無效的。我的解決辦法是將它復制到一個新變量中。如何以雙引號字符串直接訪問對象的屬性?
查看完整描述

3 回答

?
慕后森

TA貢獻1802條經(jīng)驗 獲得超5個贊

當您將變量名括在雙引號字符串中時,它將被該變量的值替換:

$foo = 2"$foo"

"2"

如果您不想使用單引號,則必須使用單引號:

$foo = 2'$foo'

但是,如果您想要訪問屬性,或者在雙引號字符串中對變量使用索引,則必須將該子表達式括在$():

$foo = 1,2,3"$foo[1]"     # yields "1 2 3[1]""$($foo[1])"  # yields "2"$bar = "abc""$bar.Length"    
# yields "abc.Length""$($bar.Length)" # yields "3"

Powershell只在這些情況下擴展變量,僅此而已。要強制計算更復雜的表達式,包括索引、屬性,甚至是完整的計算,您必須將這些表達式包含在子表達式運算符中。$( )它將導致計算內部的表達式并將其嵌入到字符串中。


查看完整回答
反對 回復 2019-06-24
?
慕姐4208626

TA貢獻1852條經(jīng)驗 獲得超7個贊

只是想多加一點,說明為什么你需要用$():

示例代碼包含一個歧義,這說明了為什么PowerShell的制作者可能選擇將擴展限制為僅僅是變量引用,而不支持對屬性的訪問(順便說一句:字符串擴展是通過調用ToString()方法,可以解釋某些“奇數(shù)”結果)。

您的示例包含在命令行的末尾:

...\$LogFileName.ldf

如果對象的屬性在默認情況下被展開,上述將解析為

...\

由于$LogFileName不會有一個名為ldf$null(或空字符串)將替換變量。


查看完整回答
反對 回復 2019-06-24
  • 3 回答
  • 0 關注
  • 746 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號