首先,这是我第一次使用PowerShell脚本 但我有一个Start-Transcript的问题来创建一个日志文件。它没有工作,我没有得到任何错误.. 这是我的剧本。
Clear-Host
Start-Transcript -Path "C:\$(get-date -f yyyy-MM-dd)_Script_log.txt" -Append -Force -NoClobber
$date = Get-Date
Write-Host "Oggi è il $date"
Write-Host "Inizializzo il Programma di Controllo"
Write-Host "Verifico se il file di controllo esiste ed è accessibile"
$ChkFile = "C:\controllo.txt"
$FileExists = Test-Path $ChkFile
If ($FileExists -eq $true)
{
write-host "Il file esiste, quindi il disco virtuale è correttamente montato nel server."
write-host "Termino la procedura e non faccio altro."
}
Else
{
Write-Host "Il file di controllo non è accessibile, procedo al montaggio tramite Mount-VHD"
#Mount-VHD -Path \\TS-453A\ISCSI-Disks\ReplicaISCSI.vhdx #<Perfetto, Funzionante>#
Write-Host "Montaggio disco virtuale completato, invio una mail all'amministratore per far verificare manualmente la cosa quanto prima"
$login = "xxxxxxxx"
$password = "xxxxxx" | Convertto-SecureString -AsPlainText -Force # Inserisco la password in chiaro, non è il massimo ma non so fare altrimenti
$credentials = New-Object System.Management.Automation.Pscredential -Argumentlist $login, $password
$From = "xxxx"
$To = "xxxxxx"
# $Cc = "YourBoss@YourDomain.com"
# $Attachment = "C:\temp\Some random file.txt"
$Subject = "Email Subject"
$Body = "Insert body text here"
$SMTPServer = "xxxxxx"
$SMTPPort = "25"
Send-MailMessage -From $From -to $To -Subject $Subject `
-Body $Body -SmtpServer $SMTPServer -port $SMTPPort `
-Credential $credentials -Priority High
Write-Host "Email Inviata, termino la procedura."
}
Stop-Transcript
Pause
你有什么建议吗?
答案 0 :(得分:0)
Write-Host
不会输出到任何流,也不会被捕获。使用Write-Output
代替成功/输出流(别名Echo
和Write
)
作为旁注,我建议不要将密码作为明文放入脚本中。相反,使用类似的东西:
(Get-Credential).Password | ConvertFrom-SecureString | Out-File .\pw.txt
这样,pw的加密程度最低。从那里,您可以使用Get-Content和ConvertTo-SecureString
最后,在您的If
声明中,您可以使用If ($FileExists)
。它只有两种状态,$True
和$False
; -eq $true
是不必要的。