繁体   English   中英

附加到 Powershell 脚本的输出

[英]Appending to the output of Powershell script

我正在尝试编写一个 powershell 脚本,该脚本将创建一个 sql 文件,其中包含给定目录中的文件名列表,并在每个文件名的开头附加了 PRINT 语句和“:r”命令,并以“GO”结尾的文件名。

请参阅下文。

PRINT 'C:/Schemas/Admin.sql'
GO
:r "C:/Schemas/Admin.sql"
GO
PRINT 'C:/Schemas/Audit.sql'
GO
:r "C:/Schemas/Audit.sql"
GO

我能够打印出文件名,但我似乎无法弄清楚如何为每一行添加前缀和后缀。 这就是我所拥有的:

(get-childitem "C:\schemas" -recurse | where {$_.extension -eq ".sql"}).fullname | out-file "C:\powerShell\masterSQL.sql"

因此,如果您可以使其以您想要的方式在控制台中显示,那么您可以捕获到变量或直接以相同的格式输出。 可以进行一些改进。

首先,对Get-ChildItem命令本身进行过滤,让文件系统提供者Get-ChildItem重任。 比使用Where-Object获取所有文件和过滤要快得多

其次,使用Set-Content这样你就不会遇到奇怪或意外的编码问题。

最后要注意的是$_ (全名)周围的双引号,这是为了确保路径被双引号包围。

(Get-ChildItem "C:\schemas" -Filter *.sql -Recurse).FullName |
        ForEach-Object {
            "PRINT ""$_"""
            "GO"
            ":r ""$_"""
            "GO"
        } | Set-Content -Path "C:\powerShell\masterSQL.sql" -Encoding UTF8
     

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM