[英]XML data coming in newline using invoke-sql command in powershell
[英]Using Invoke-SQL query with Foreach loop
我有一个导入到的实例列表
$ SQLServerList
我想让他们在每个实例上查找数据库。
foreach ($server in $SQLServerList ){
Invoke-Sqlcmd -Query "use master select name, database_id, create_date, recovery_model_desc from sys.databases" -ServerInstance $server
}
但是,这不会运行我在做什么错?
给定一个CSV文件,其中“ Server”列包含服务器名称,使用
$SQLServerList = import-csv servers.csv
在文件上将返回具有NoteProperty'Server 'Server'
的对象。 (想象一下,csv有多个列,您需要一种方法来标识正在访问的列,并且$SQLServerList
对象将为每个列包含一个属性)。
在foreach ($server in $SQLServerList)
使用此命令时foreach ($server in $SQLServerList)
, $SQLServerList
和$server
代表整个对象,将其传递给invoke-sqlcmd
并没有多大意义,因此需要$Server.Server
。
或者, $SQLServerList = (import-csv servers.csv).Server
返回一个字符串数组,应该可以直接在foreach ($server in $SQLServerList)
使用下面的内容,应该可以更轻松地解决错误。。查看计数是否与CSV文件中的计数匹配。 您也可以将其列出来查看CSV的内容。此外,将正在使用的数据库从脚本内部更改为参数-Database。
$inputfile = "C:\Databases\JUSTCREATED.csv"
[Array]$SQLServerList = get-content -Path $inputfile
$SQLServerList.count
foreach ($server in $SQLServerList ){
Write-Output $server
try{
Invoke-Sqlcmd -Query " select name, database_id, create_date, recovery_model_desc from sys.databases" -ServerInstance $server -Database master
}
catch
{
Write-Output $_.Exception.Message
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.