小编Gre*_*fus的帖子

Powershell SQL SELECT输出到变量

我正在调用查询SQL表的函数.我只需要一个细胞的结果.我无法成功地将单元格数据检索到函数中的变量中.

例如,如果我有一个包含以下内容的表:

    FeedID    Name    Address
    15        Bill    Jones
Run Code Online (Sandbox Code Playgroud)

我需要将FeedID值'15'捕获到变量中.我的SQL语句只捕获FeedID,但我不知道如何提取值

这是我到目前为止:

    function Invoke-SQL {
    param(
    [string] $dataSource = "10.0.100.1",
    [string] $database = "Database123",
    [string] $sqlCommand = $("SELECT [FeedID] FROM [dbo].[FeedList] WHERE [FeedFileName] = 'filename.txt'")
    )

    $connectionString = "Data Source=$dataSource; " + "Integrated Security=SSPI; " + "Initial Catalog=$database"
    $connection = new-object system.data.SqlClient.SQLConnection($connectionString)
    $command = new-object system.data.sqlclient.sqlcommand($sqlCommand,$connection)
    $connection.Open()

    $adapter = New-Object System.Data.sqlclient.sqlDataAdapter $command
    $dataset = New-Object System.Data.DataSet
    write-output $adapter.Fill($dataSet) | Out-Null

    $connection.Close()
    $dataSet.Tables
    }

    $FeedID = Invoke-SQL
    $FeedID
Run Code Online (Sandbox Code Playgroud)

sql powershell

12
推荐指数
2
解决办法
7万
查看次数

从invoke-command进行Powershell日志记录

我有一个包含日志记录功能的脚本.该函数将日志写入$ msg变量,然后将消息写入屏幕.我可以将此输出重定向到.txt文件以进行日志记录.

我需要使用invoke-command将脚本运行到多个服务器,并将日志输出写入运行脚本的计算机上的txt文件.

我试图弄清楚如何从PSSession输出写日志函数中的$ msg并返回它,以便我可以为所有服务器创建一个主日志文件.我应该创建并填充自定义对象吗?不知道如何做到这一点并从远程会话中恢复结果.

甚至可以这样做吗?

以下是我正在使用的代码示例以及日志文件输出应如下所示:

$servers = 'Server1','Server2'
$logfile = 'c:\scripts\logs\Reg-DLL-log.txt'

foreach($server in $servers){
    invoke-command -cn $server -sb{
        Param($server)

        Function write-log{
            [cmdletbinding()]
            Param(
                [Parameter(ValueFromPipeline=$true,Mandatory=$true)] [ValidateNotNullOrEmpty()]
                [string] $Message,
                [Parameter()] [ValidateSet(“Error”, “Warn”, “Info”)]
                [string] $Level = “Info”,
                [Parameter()] [ValidateRange(1,30)]
                [Int16] $Indent = 0
            )
            $msg = "{0} {1}{2}:{3}" -f (Get-Date -Format "yyyy-MM-dd HH:mm:ss"), $Level.ToUpper(), (" " * $Indent), $Message
                #This is output to screen
                switch ($Level) {
                    'Error' { Write-Host ('{0}{1}' -f (" " * $Indent), $Message) -ForegroundColor 'Red'}
                    'Warn' …
Run Code Online (Sandbox Code Playgroud)

powershell powershell-2.0 powershell-remoting

4
推荐指数
1
解决办法
2万
查看次数