Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何从powershell中的变量中操作数据_Sql_Powershell - Fatal编程技术网

Sql 如何从powershell中的变量中操作数据

Sql 如何从powershell中的变量中操作数据,sql,powershell,Sql,Powershell,我有一个powershell脚本,我正试图用它备份数量不断变化的SQL数据库。幸运的是,所有这些数据库都列在注册表项中。我在一个for-each循环中利用这一点。我遇到的问题是,在获取了我想要的注册表值之后,当我试图将它传递到我的函数中以备份数据库时,变量中似乎有一些信息可以删除。如果我通过调用变量($variable)将变量的内容输出到屏幕上,则显示得很好。但是,如果我将host变量写入屏幕,调用函数时显示的额外“内容”也会显示出来 下面是脚本中生成变量内容的部分 foreach ($chil

我有一个powershell脚本,我正试图用它备份数量不断变化的SQL数据库。幸运的是,所有这些数据库都列在注册表项中。我在一个for-each循环中利用这一点。我遇到的问题是,在获取了我想要的注册表值之后,当我试图将它传递到我的函数中以备份数据库时,变量中似乎有一些信息可以删除。如果我通过调用变量($variable)将变量的内容输出到屏幕上,则显示得很好。但是,如果我将host变量写入屏幕,调用函数时显示的额外“内容”也会显示出来

下面是脚本中生成变量内容的部分

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(),非常感谢,这正是我在这方面所需要的。再一次,非常感谢。非常感谢,这正是我在这方面所需要的。再次感谢你。