gpt4 book ai didi

powershell - 如何在双引号字符串中使用对象的属性?

转载 作者:行者123 更新时间:2023-12-03 05:05:19 25 4
gpt4 key购买 nike

我有以下代码:

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

当我尝试使用字符串执行命令中的属性之一时:

& "$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 的值,这是无效的。
我的解决方法是将其复制到一个新变量中。

如何直接在双引号字符串中访问对象的属性?

最佳答案

当您将变量名称括在双引号字符串中时,它将被该变量的值替换:

$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 仅在这些情况下扩展变量,仅此而已。要强制计算更复杂的表达式(包括索引、属性甚至完整计算),您必须将它们括在子表达式运算符 $( ) 中,这会导致内部表达式被计算并嵌入到字符串中。

关于powershell - 如何在双引号字符串中使用对象的属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1145704/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com