首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PowerShell scriptBlock在试图将scriptblock写到文件时包装脚本

PowerShell scriptBlock在试图将scriptblock写到文件时包装脚本
EN

Stack Overflow用户
提问于 2013-09-23 15:12:35
回答 2查看 2.5K关注 0票数 2

我正试图通过另一个PowerShell脚本创建一个PowerShell脚本。我有这样的事情:>

代码语言:javascript
复制
    $scriptBlock = {
    write-host "this is the body of the script that I want to add to another PS script"
    if($true){
     write-host "so that I can execute this automatically created script somewhere "
        }
    }

$scriptBlock | Out-String -Width 4096 | Out-File "c:\test.ps1"

"$($Dict.Get_Item("MASTER_DIRECTORY_PATH"))\MEDIA_FILE\“/S /noreboot /L logfile="%TEMP%\AT $($Dict.Get_Item("PRODUCT_NAME")) V8.4.日志”altsource="C:\temp\baf\mediafile“

但是,当我有一些像上面所示的长单行脚本时,它会自动包装,这样输出.ps1文件就不会像我直接从父脚本调用脚本一样工作。因此,在父.ps1脚本创建的.ps1文件中,代码如下所示:

代码语言:javascript
复制
ElseIf($str.StartsWith("DRIVER_DATE=")){$str = "DRIVER_DATE=$(Get-Date 
-f MM-dd-yyyy))"}

如果运行,它将无法正常运行。

那么,有谁知道如何对脚本块进行文本格式化,以便正确地将它们写入另一个子脚本文件以供进一步执行?我做了一些研究,我认为这可能与PS的内部文本缓冲区宽度有关。我也尝试过其他的文件外方法,比如System.IO.StreamWriter,但是它们看起来都是相同的,并且限制在每一行一定的宽度之内。

请帮帮我,谢谢!

这件事的全部目的是自动生成一些脚本,并在其他机器上远程执行这些创建的脚本。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-09-23 15:45:07

在中使用-Width参数,如下所示:

代码语言:javascript
复制
Out-File -FilePath "c:\test.ps1"  -Width 4096
票数 2
EN

Stack Overflow用户

发布于 2013-09-23 15:44:14

变量不会在单引号中展开。也许你需要这样的样本:

代码语言:javascript
复制
$scripts=@'
$date=get-date
"Hello,now is $date"
'@

$scripts | Out-File second.ps1
./second.ps1 

产出如下:

代码语言:javascript
复制
Hello,now is 09/23/2013 23:41:18
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18962841

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档