powershell - powershell:管道获取内容到带有参数的ps1文件
问题描述
我正在尝试编写一个脚本,它使用 powershell cmdlet get-content tail 并将新行插入到 sql server 表中。我无法获得将尾部通过管道传递到处理表插入的 sqlinsert.ps1 文件的语法。
我正在寻找有关如何将“get-content tail”通过管道传输到 sqlinsert.ps1 文件以使用以下命令执行 sql 数据库插入语句的帮助:
$startTime = get-date
Write-Host "\\iisserver\logs\Logs-$("{0:yyyyMMdd}" -f (get-date)).txt"
get-content "\\iisserver\logs\Logs-$("{0:yyyyMMdd}" -f (get-date)).txt" -tail 1 -wait | & "sqlinsert.ps1" -stmp $("{0:yyyy-MM-dd hh:mm:ss.fff}" -f (get-date)) -method "Error" -msg $_
# % { "$_ read at $(Get-Date -Format "hh:mm:ss")" }
在 sqlinsert.ps1 中:
param ([string]$stmp, [string]$method, [string]$msg )
$Connection = New-Object System.Data.SQLClient.SQLConnection
$Connection.ConnectionString = "server='$serverName';database='$databaseName';User ID = $uid; Password = $pwd;"
$Command = New-Object System.Data.SQLClient.SQLCommand
$Command.Connection = $Connection
$sql = "insert into [tbl_iiserrors] (errstamp, method, msg) values (@stmp , @method, @msg) "
. . .
我得到的错误:
& :术语“sqlinsert.ps1”未被识别为 cmdlet、函数、脚本文件或可运行程序的名称。检查名称的拼写,或者如果包含路径,请验证路径是否正确并重试。在 C:\Temp\ob\iislog\tst_tail.ps1:3 char:95
- ... Mdd}" -f (get-date)).txt" -tail 1 -wait | &“sqlinsert.ps1”-stmp $ ...
~~~~~~~~~~~~~~~
- CategoryInfo : ObjectNotFound: (sqlinsert.ps1:String) [], CommandNotFoundException
- 完全限定错误 ID:CommandNotFoundException
建议[3,General]:找不到命令sqlinsert.ps1,但在当前位置确实存在。默认情况下,Windows PowerShell 不会从当前位置加载命令。如果您信任此命令,请键入:“.\sqlinsert.ps1”。有关更多详细信息,请参阅“获取关于_Command_Precedence 的帮助”。
当我从 powershell 命令运行 sqlinsert.ps1 时,它可以工作: PS c:\temp> .\sqlinsert -stmp 2020-11-20 00:00:00 -method 'eek' -msg 'uh hello'
解决方案
为了将管道输入绑定到参数,您需要用[Parameter]
属性装饰它并指定它接受管道输入,如下所示:
param (
[string]$stmp,
[string]$method,
[Parameter(ValueFromPipeline = $true)]
[string]$msg
)
有关如何修改参数行为的更多详细信息,请参阅about_Functions_Advanced_Parameters
帮助文件
推荐阅读
- android - 如何在不影响描边颜色的情况下从 ImageView 设置形状的填充颜色?
- java - ActiveMQ ObjectMessage 中的映射抛出 ClassCastException:无法分配 java.util.CollSer 的实例?
- sharepoint - 打开后在 mgt-person-card 中呈现其他详细信息
- android-studio - Android Studio 2020.3.1 (Canary) : Cmake 找不到与“Ninja”对应的构建程序
- jhipster - 应用初始化后如何生成代码(JHipster)?
- python - Django 类别和子类别的产品过滤器
- python - 熊猫按不同列中的相同值分组
- c - 如何使用 UIautomation 和纯 C 从浏览器中检索 URL
- javascript - 在 AWS lambda(Nodejs 运行时)中运行 git 命令
- ruby-on-rails - Facebook 登录 URL 被正确的 OAuth 重定向 URI 阻塞