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

2024-01-05

我有以下代码:

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

becomes

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在双引号字符串中使用对象的属性? 的相关文章

随机推荐

  • 如何将 RemoteWebDriver 指向多个独立 docker selenium 独立 chrome 浏览器之一?

    我需要在 docker 容器内运行的单独 chrome 浏览器上运行测试用例 我已经安装了 chrome docker 容器 如下所示 docker run d p 4444 4444 p 5900 5900 v dev shm dev s
  • git 添加 . -> 对于新文件仍然“无需提交”

    我在 Git 上遇到了困难 我似乎无法添加我的文件 我跑了ls显示文件位于当前目录中 然后运行git add then git status这表明 没有什么可承诺的 JJ Computer first app JJ git init Rei
  • UI 在大量计算时冻结

    我正在将巨大的文件加载到内存中 但在此计算中我的应用程序冻结了 知道我的代码有什么问题吗 public void Drop DragEventArgs args BackgroundWorker worker new BackgroundW
  • 如何计算性能测试响应时间的改进百分比

    我应该如何计算响应时间的改进百分比 我正进入 状态15306 ms旧代码的响应时间和799 ms更新代码的响应 响应时间的改进百分比是多少 有两种方法可以解释 响应时间的百分比改进 一种是计算百分比的经典且普遍存在的公式change在数据点
  • 如何设置QTextEdit的PlaceHolderText

    我想设置一个占位符文本QTextEdit 我知道如何将其设置为QLineEdit 有一个财产setPlaceHolderText 但此属性不适用于QTextEdit 请提出您宝贵的建议来解决这个问题 Use QTextEdit的功能 使用以
  • Spring MVC 处理程序拦截器不运行

    我有以下拦截器类 package cz coffeeexperts feedback server web interceptors import javax servlet http HttpServletRequest import j
  • 如何将图像转换为Buffer

    我想将图像 Mat 转换为缓冲区 console log image output Mat step 960 elemSize 3 sizes 160 320 empty 0 depth 0 dims 2 channels 3 type 1
  • openerp:ubuntu 上的内部服务器错误

    我刚刚在我的系统中安装了新的 OpenERP 8 0 替换了 Ubuntu 12 04 上现有的 OpenERP 7 0 我已经在家里的 Ubuntu 笔记本电脑上下载了这个 它运行得很好 并且想在我的办公室服务器上做同样的事情 我采取的步
  • STL 是否包含哈希表? [复制]

    这个问题在这里已经有答案了 可能的重复 C 中的哈希表 https stackoverflow com questions 133569 hashtable in c 有人可以提供一个简单的 C hash map 示例吗 https sta
  • 丢失的 ;在 for 循环初始化程序之后

    var nodeWordsString document getElementById nodeWordsTextArea value trim var nodeWordsStringArray nodeWordsString split
  • 在 mac el Capitan 上将 Brew 降级到之前版本 (opencv3/3.0.0)

    我在 mac 上并使用过brew安装opencv3 我有 opencv3 3 0 0 今天 我更新了它并获得了版本3 1 0 1 但是 此更新破坏了一切 当我尝试使用 VideoCapture 读取帧并使用 waitKey 函数时 它会因以
  • 如何从`MoyaError`获取错误状态代码?

    我正在使用一个Moya Moya ModelMapper and RxSwift执行网络请求 这是我的示例代码 let provider RxMoyaProvider
  • 如何使用 Realm 查询随机项目

    我只是好奇有没有办法从 Realm 查询随机项目 我需要从我的领域中获取 4 件随机物品 一件指定了 ID 的特定物品 Edit 我不知道 Realm 中有获取随机对象的方法 但您可以按照下面的描述进行操作 一种方法是查询所有对象 然后生成
  • 使用 C# 将光标移动到 MsWord 中文本的末尾?

    这个问题听起来可能很简单 但我无法找到任何解决方案 我想做的是将MsWord中的光标位置移动到文本末尾 我的代码如下 object StartPos 0 object Endpos 1 Microsoft Office Interop Wo
  • 如何使用 casperJS 等待 socket.io 连接返回数据?

    我正在抓取一个使用 socket io 填充一些选择标签选项的页面 在评估页面之前如何等待套接字接收数据 我在用casperJS http casperjs org 套接字代码 由目标站点加载 socket on list function
  • 导入错误:没有名为“Cython”的模块

    我正在尝试做from Cython Build import cythonize我收到消息ImportError No module named Cython 但是我用命令安装了Pythonpip install Cython 怎么了 Py
  • scapy 十六进制转储()

    我想知道哪个hexdump scapy 使用 因为我想修改它 但我根本找不到任何东西 我发现的是 def hexdump self lfilter None for i in range len self res p self elt2pk
  • Linux 上的 Java BlockingQueue 延迟较高

    我正在使用 BlockingQueue s 尝试 ArrayBlockingQueue 和 LinkedBlockingQueue 在我当前正在处理的应用程序中的不同线程之间传递对象 在此应用程序中 性能和延迟相对重要 因此我很好奇使用 B
  • 检查 JSON 和 XML 是否有效? C#

    我使用 newtonsoft json nethttp json codeplex com http json codeplex com 我想知道 如何验证 json 和 xml 是否有效 json xml 我如何验证这一点 您想要在服务器
  • 如何在双引号字符串中使用对象的属性?

    我有以下代码 DatabaseSettings NewDatabaseSetting select DatabaseName DataFile LogFile LiveBackupPath NewDatabaseSetting Databa