我想通過另一個PowerShell腳本創建PowerShell腳本。我有類似: >當試圖將scriptblock寫入文件時,PowerShell scriptBlock包裝腳本
$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"
AtRunUnattended.exe 「$($ Dict.Get_Item(」 MASTER_DIRECTORY_PATH 「))\ MEDIA_FILE \」/ S/NOREBOOT/L日誌文件=」 %TEMP%\ AT $($ Dict.Get_Item(「PRODUCT_NAME」))V8.4.log「altsource =」C:\ temp \ baf \ mediafile「
但是,當我有一些長的單行腳本就像上面顯示的那樣,它會自動包裝,所以輸出.ps1文件不起作用,就像我直接從父script調用腳本一樣PT。 因此,在父的.ps1腳本創建的名爲.ps1文件,代碼則是這樣的:
ElseIf($str.StartsWith("DRIVER_DATE=")){$str = "DRIVER_DATE=$(Get-Date
-f MM-dd-yyyy))"}
如果運行它,將無法正常運行。
那麼是否有人知道如何將文本格式的scriptblocks,以便他們可以正確地寫入另一個子腳本文件進一步執行? 我做了一些研究,我認爲它可能與PS的內部文本緩衝區寬度有關。我嘗試了其他的out-file方法,就像[System.IO.StreamWriter]一樣,但是它們看起來都是一樣的 - 包裝並限制爲每行一定的寬度。
請幫幫我,謝謝!
這件事的全部目的是自動生成一些腳本,並在其他機器上遠程執行這些創建的腳本。
您是否嘗試過使用Out-File命令使用-Width運算符? –
@Musaab謝謝!我試過了,它工作。此外,這個寬度在什麼單位?字符數?字節? – FrozenLand
我會作爲答案張貼,我很感激你是否可以選擇它作爲正確的答案。至於寬度運算符,是的,這是你可以在這裏看到的字符數:http://technet.microsoft.com/en-us/library/hh849882.aspx –