Tsql Powershell-复制或添加到数据表?
我正在使用Chad Miller&Hey脚本编写Guy的函数,并将查询结果保存到datatable,然后将其写入SQL表 以下是我正在运行的代码:Tsql Powershell-复制或添加到数据表?,tsql,powershell,datatable,Tsql,Powershell,Datatable,我正在使用Chad Miller&Hey脚本编写Guy的函数,并将查询结果保存到datatable,然后将其写入SQL表 以下是我正在运行的代码: $dt = invoke-sqlcmd2 -serverinstance $_.server -query "exec master.dbo.sp_who" -As 'Datatable' write-datatable -serverinstance "myserverhere" -DATABASE "dbainfo" -tablename "w
$dt = invoke-sqlcmd2 -serverinstance $_.server -query "exec master.dbo.sp_who" -As 'Datatable'
write-datatable -serverinstance "myserverhere" -DATABASE "dbainfo" -tablename "who_sp_results" -DATA $dt
我想在datatable中添加一个字段-我正在运行一个无法修改的SP,并想添加servername。我并行运行它,所以我不能使用暂存表,我必须修改现有的datatable或将其移动到新的datatable
spid : 1
ecid : 0
status : background
loginame : sa
hostname :
blk : 0
dbname :
cmd : RESOURCE MONITOR
request_id : 0
RowError :
RowState : Unchanged
Table : {sa, sa, sa, sa...}
ItemArray : {1, 0, background , sa...}
HasErrors : False
下面是$dt | get member的结果:
TypeName:System.Data.DataRow
Name MemberType Definition
---- ---------- ----------
AcceptChanges Method System.Void AcceptChanges()
BeginEdit Method System.Void BeginEdit()
CancelEdit Method System.Void CancelEdit()
ClearErrors Method System.Void ClearErrors()
Delete Method System.Void Delete()
EndEdit Method System.Void EndEdit()
Equals Method bool Equals(System.Object obj)
GetChildRows Method System.Data.DataRow[] GetChildRows(string relationName), System.Data.DataRow[] GetChildRows(...
GetColumnError Method string GetColumnError(int columnIndex), string GetColumnError(string columnName), string Get...
GetColumnsInError Method System.Data.DataColumn[] GetColumnsInError()
GetHashCode Method int GetHashCode()
GetParentRow Method System.Data.DataRow GetParentRow(string relationName), System.Data.DataRow GetParentRow(stri...
GetParentRows Method System.Data.DataRow[] GetParentRows(string relationName), System.Data.DataRow[] GetParentRow...
GetType Method type GetType()
HasVersion Method bool HasVersion(System.Data.DataRowVersion version)
IsNull Method bool IsNull(int columnIndex), bool IsNull(string columnName), bool IsNull(System.Data.DataCo...
RejectChanges Method System.Void RejectChanges()
SetAdded Method System.Void SetAdded()
SetColumnError Method System.Void SetColumnError(int columnIndex, string error), System.Void SetColumnError(string...
SetModified Method System.Void SetModified()
SetParentRow Method System.Void SetParentRow(System.Data.DataRow parentRow), System.Void SetParentRow(System.Dat...
ToString Method string ToString()
Item ParameterizedProperty System.Object Item(int columnIndex) {get;set;}, System.Object Item(string columnName) {get;s...
blk Property System.String blk {get;set;}
cmd Property System.String cmd {get;set;}
dbname Property System.String dbname {get;set;}
ecid Property System.Int16 ecid {get;set;}
hostname Property System.String hostname {get;set;}
loginame Property System.String loginame {get;set;}
request_id Property System.Int32 request_id {get;set;}
spid Property System.Int16 spid {get;set;}
status Property System.String status {get;set;}
我想您正在寻找
添加成员
我想您正在寻找添加成员
您不想使用添加成员,因为这不会添加数据列类型。相反,请执行以下操作:
$Col = new-object Data.DataColumn
$Col.ColumnName = "ServerName"
$dt.Columns.Add($col)
$dt | %{$_.ServerName = "myserverName"}
顺便说一句,如果将get member与inputobject参数一起使用,您将看到列和add方法:
gm-输入对象$dt
这与
$dt|gm返回数据行的属性和方法。第一个不会展开。您不想使用“添加成员”,因为这不会添加数据列类型。相反,请执行以下操作:
$Col = new-object Data.DataColumn
$Col.ColumnName = "ServerName"
$dt.Columns.Add($col)
$dt | %{$_.ServerName = "myserverName"}
顺便说一句,如果将get member与inputobject参数一起使用,您将看到列和add方法:
gm-输入对象$dt
这与
$dt|gm返回数据行的属性和方法。第一个不会展开。如果您提供
$dt | get member
那么可能没有sql server的人也可以尝试帮助:-)@Graimer-添加,请告诉我您还需要什么!谢谢,太好了。Chad似乎为您找到了解决方案如果您提供$dt | get member
,那么可能没有sql server的人也可以尝试帮助:-)@Graimer-添加,请告诉我您还需要什么!谢谢,太好了。看来查德为youTried找到了解决办法,没有骰子$dt | Add Member-MemberType NoteProperty-Name ServerName-value'myservername'
不起作用,$dt | Add Member-MemberType NoteProperty-Name ServerName-value'myservername'也不起作用,$dt | Add Member-MemberType NoteProperty-Name-value$.server
($\服务器在该点具有服务器名)当你说不起作用时,是有错误还是什么都没做?我假设你使用了Get Member
来查看它是否被添加。Format-
函数类可能不会显示它,即使它存在。没有-powershell新手,我以为select对象会显示所有内容。但是,我前后都运行了Get成员呃,两者是相同的。尝试过了,没有骰子。$dt | Add Member-MemberType NoteProperty-Name ServerName-value'myservername'
不起作用,,$dt | Add Member-MemberType NoteProperty-Name ServerName-value'myservername'
也不起作用er($服务器在该点具有服务器名)当你说不起作用时,是有错误还是什么都没做?我假设你使用了Get Member
来查看它是否被添加。Format-
函数类可能不会显示它,即使它存在。没有-powershell新手,我以为select对象会显示所有内容。但是,我前后都运行了Get成员呃,两者是相同的。是的,但是获得一个普通的gm
会让像我这样以前没有使用过datatables或脚本的人知道表中有什么类型的对象(例如System.Data.Data*
objects而不是customobj)。:)此外,您可以将其简化为:$dt.Columns.Add(“服务器名”)$dt |%{$\u.ServerName=“myserverName”}
@Graimer+1对您的评论进行简化。“gm-input$var”与“$var | gm”一开始让我感到困惑,所以我想在这里指出这一点,这肯定会使DataTable与datarowsys有所不同,但是获得一个正常的gm
会让像我这样以前没有使用过datatables或脚本的人知道表中有什么类型的对象(例如,System.Data.Data*
objects而不是customobj)。:)此外,您可以将其简化为:$dt.Columns.Add(“服务器名”)$dt |%{$\u.ServerName=“myserverName”}
@Graimer+1对您的评论进行简化。“gm-input$var”和“$var | gm”一开始让我感到困惑,所以我想在这里指出这一点,并且肯定会在DataTable和DataRows中产生不同