2013-03-15 129 views
1

我知道如何使用猫文件如何从PowerShell中的文本文件内容设置变量?

cat file.txt 

,但我有可变

[string]$body = "Body message here" 

我需要帮助改变它摆脱file.txt

我试过的文本内容,但它没”工作。

[string]$body = $cat file.txt 

这里是完整的脚本,我正在尝试更改param部分。

param 
(  
    [string]$email = $(read-host "Enter a recipient email"), 
    [string]$subject = $(read-host "Enter the subject header"), 
    [string]$body = $(read-host "Enter the email text (optional)") 
) 

param 
(  
    [string]$email = "[email protected]", 
    [string]$subject = "server", 
    [string]$body = gc C:\Users\myuser\Documents\somefolder\GnuWin32\bin\status.txt 
) 

# ========================================================================== 
# Functions 
# ========================================================================== 

function Send-Email 
(
    [string]$recipientEmail = $(Throw "At least one recipient email is required!"), 
    [string]$subject = $(Throw "An email subject header is required!"), 
    [string]$body 
) 
{ 
    $outlook = New-Object -comObject Outlook.Application 
    $mail = $outlook.CreateItem(0) 
    $mail.Recipients.Add($recipientEmail) 
    $mail.Subject = $subject 
    $mail.Body = $body 

    # For HTML encoded emails 
    # $mail.HTMLBody = "<HTML><HEAD>Text<B>BOLD</B> <span style='color:#E36C0A'>Color Text</span></HEAD></HTML>" 

    # To send an attachment 
    # $mail.Attachments.Add("C:\Temp\Test.txt") 

    $mail.Send() 
    Write-Host "Email sent!" 
} 

Write-Host "Starting Send-MailViaOutlook Script." 

# Send email using Outlook 
Send-Email -recipientEmail $email -subject $subject -body $body 

Write-Host "Closing Send-MailViaOutlook Script." 

回答

2

变化:

[string]$body = (gc C:\Users\myuser\Documents\somefolder\GnuWin32\bin\status.txt) 

注意括号。

+0

谢谢,对不起,我希望他们允许我们接受2个答案。 – Mowgli 2013-03-15 16:02:35

+0

@Mowgli很高兴帮助!下次发布错误的PowerShell也给你,它可以帮助我们给予答案 – 2013-03-15 16:04:24

+0

我也想自己做,但我不知道如何暂停PS脚本。我已经2天了。 – Mowgli 2013-03-15 16:06:21

3

请尝试以下

[string]$body = gc file.txt 

命令gcGet-Content的别名,这将获得指定项目的内容,并返回它作为一个string

编辑

由于C.B.指出,在你的例子中你试图用$cat而不是cat$cat尝试指的是没有定义的变量,但cat是另一个别名Get-Content

EDIT2

它看起来像你正试图初始化设置了一个param。如果是这样,你需要做以下

[string]$body = $(gc "C:\Users\myuser\Documents\somefolder\GnuWin32\bin\status.txt") 
+2

此外'cat'是'get-content'的别名,在OP代码中错误是'$ cat file.txt',其中'$ cat'是一个不存在的变量,而不是'get-内容cmdlet'。 – 2013-03-15 15:54:33

+0

get-content也是猫的别名,所以他可以保留它。只需要失去$。 – mjolinor 2013-03-15 15:55:06

+0

我也尝试过'gc',但它没有奏效。请在我的问题中看到更新的代码,在我的另一个脚本'cat file.txt'中工作。我不知道为什么它在这里不起作用。 – Mowgli 2013-03-15 15:55:44

相关问题