当我运行此脚本时,结果不会仅用于获取结果的命令插入数据库。
如果我只是将变量$Computername
和$username
输出到他们正确输出的屏幕
$Computername = 'get-wmiobject -query "select csname from win32_operatingsystem" | select-object csname | ft -hide'
$username = 'Get-Childitem env:username |select value | ft -hide'
$SqlCmd = New-Object System.Data.SqlClient.SqlCommand
$SqlInsert = @"
insert into info (computername,username)
Values ('$computername','$username')
"@
$Connection.open()
$SqlCmd.CommandText = $SqlInsert
$SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter
$SqlAdapter.SelectCommand = $SqlCmd
$SqlCmd.Connection = $Connection
$DataSet = New-Object System.Data.DataSet
$SqlAdapter.Fill($DataSet)
$Connection.Close()
关于如何仅插入变量而不是命令的任何想法?
答案 0 :(得分:1)
单击这样的单引号。
$Computername = get-wmiobject -query "select csname from win32_operatingsystem" | select-object csname | ft -hide
$username = Get-Childitem env:username |select value | ft -hide
另外,您会发现获取计算机名和用户名的代码与此相同;
$env:computername
$env:username
答案 1 :(得分:1)
三件事:
您正在将字符串传递给$ Computername和$ username变量,而不是命令。 从这些变量赋值中删除第一个和最后一个单引号。
Format-Table Cmdlet用于更好地格式化PowerShell控制台的输出。
$ Computername = get-wmiobject -query“从win32_operatingsystem中选择csname”| select-object csname | ft -hide
上面的命令为您提供了一个格式对象,您可以使用
查看 $computername | Get-Member
此对象不是您要插入数据库的对象。 而是使用-Expandproperty Select-object参数来获取字符串值。
$Computername = get-wmiobject -query "select csname from win32_operatingsystem" | select-object -ExpandProperty csname
$username = Get-Childitem env:username |select -ExpandProperty value
您缺少SQLConnection对象。或者可能是故意隐藏它:)