Sql 如何从powershell中的变量中操作数据
我有一个powershell脚本,我正试图用它备份数量不断变化的SQL数据库。幸运的是,所有这些数据库都列在注册表项中。我在一个for-each循环中利用这一点。我遇到的问题是,在获取了我想要的注册表值之后,当我试图将它传递到我的函数中以备份数据库时,变量中似乎有一些信息可以删除。如果我通过调用变量($variable)将变量的内容输出到屏幕上,则显示得很好。但是,如果我将host变量写入屏幕,调用函数时显示的额外“内容”也会显示出来 下面是脚本中生成变量内容的部分Sql 如何从powershell中的变量中操作数据,sql,powershell,Sql,Powershell,我有一个powershell脚本,我正试图用它备份数量不断变化的SQL数据库。幸运的是,所有这些数据库都列在注册表项中。我在一个for-each循环中利用这一点。我遇到的问题是,在获取了我想要的注册表值之后,当我试图将它传递到我的函数中以备份数据库时,变量中似乎有一些信息可以删除。如果我通过调用变量($variable)将变量的内容输出到屏幕上,则显示得很好。但是,如果我将host变量写入屏幕,调用函数时显示的额外“内容”也会显示出来 下面是脚本中生成变量内容的部分 foreach ($chil
foreach ($childitem in get-childitem "HKLM:\SOFTWARE\Wow6432Node\Lanovation\Prism Deploy\Server Channels")
{$DBName = get-itemproperty Registry::$childitem | select "Channel Database Name"
write-host $DBname}
以下是write host显示的内容:
@{Channel Database Name=Prism_Deploy_Sample_268CBD61_AC9E_4853_83DE_E161C72458DE}
但我需要的只是这一部分:
Prism_Deploy_Sample_268CBD61_AC9E_4853_83DE_E161C72458DE
我已经试着在网上查看如何做到这一点,我的发现提到了类似于$variable.split的东西,然后指定了我的分隔符。但是,当我尝试此操作时,我得到一个错误,提示“方法调用失败,因为[System.Management.Automation.PSCustomObject]不包含名为“split”的方法。”
我不知道该从现在的位置走到哪里。听起来像是在返回一个哈希表行对象 试一试
写入主机$DBName.value
或者,如果做不到这一点,就采取行动
$DBName |获取成员
当有疑问时,
get member
会让您很好地了解您在处理什么。听起来像是在返回哈希表行对象
试一试
写入主机$DBName.value
或者,如果做不到这一点,就采取行动
$DBName |获取成员
当有疑问时,
get member
会让您很好地了解您正在处理的问题。select object
将返回一个具有您“选择”的命名属性的对象。要仅获取该属性的值,只需按名称访问它:
write-host $DBname."Channel Database Name"
select object
将返回具有您“选择”的命名属性的对象。要仅获取该属性的值,只需按名称访问它:
write-host $DBname."Channel Database Name"
你应该会写作
foreach ($childitem in get-childitem "HKLM:\SOFTWARE\Wow6432Node\Lanovation\Prism Deploy\Server Channels")
{$DBName = get-itemproperty Registry::$childitem | select "Channel Database Name"
write-host $DBname.Name}
要获得您想要的内容,您应该能够编写
foreach ($childitem in get-childitem "HKLM:\SOFTWARE\Wow6432Node\Lanovation\Prism Deploy\Server Channels")
{$DBName = get-itemproperty Registry::$childitem | select "Channel Database Name"
write-host $DBname.Name}
要获取您要查找的内容确定,因此在尝试$DBName |获取成员时,我得到了TypeName:System.Management.Automation.PSCustomObject Name成员类型定义-----------------------------------Equals方法System.Boolean Equals(Object obj)GetHashCode方法系统。Int32GetHashCode()GetType方法系统。TypeGetType()ToString方法系统。StringToString()通道数据库名称NoteProperty系统。StringChannel数据库名称=Prism\u Deploy\u sam。。。我不是powershell向导,所以这里的任何帮助都会很有用appreciated@Nathan-请将其放在原始帖子的代码块中,以便我阅读:)可以在此处找到输出的屏幕截图:好的,删除
选择…
管道,然后再次运行它。我认为您可能可以执行$DBName.ToString()确定,因此在尝试$DBName | Get member时,我得到了TypeName:System.Management.Automation.PSCustomObject Name MemberType定义-----------Equals方法System.Boolean Equals(Object obj)GetHashCode方法系统。Int32GetHashCode()GetType方法系统。TypeGetType()ToString方法系统。StringToString()通道数据库名称NoteProperty系统。StringChannel数据库名称=Prism\u Deploy\u sam。。。我不是powershell向导,所以这里的任何帮助都会很有用appreciated@Nathan-请将其放在原始帖子的代码块中,以便我阅读:)可以在此处找到输出的屏幕截图:好的,删除选择…
管道,然后再次运行它。我想你可能可以做一个$DBName.ToString(),非常感谢,这正是我在这方面所需要的。再一次,非常感谢。非常感谢,这正是我在这方面所需要的。再次感谢你。