我正在编写用于创建错误状态文件的PowerShell脚本。我需要的信息在全局变量($info
)中定义,并返回我需要的正确字符串。类型为System.String
。
function Add-Fail
{
$date = Get-Date -f "yyyy-MM-dd"
Add-Content \\Path\To\FailMonitor\${date}.txt $info
}
我也试过传递这样的变量:
function Add-Fail ($info)
{
$date = Get-Date -f "yyyy-MM-dd"
Add-Content \\Path\To\FailMonitor\${date}.txt $info
}
并调用它,其中info是一个字符串:
Add-Fail($info)
和这个
Add-Fail -info $info
对于这两种情况,我得到的是相同的输出,它要求一个值。如果我输入值,它会一直提示我输入无限数组中的下一个值。如果我没有输入一个并且只是点击输入,则会给我一个没有信息的错误,甚至在完整错误的行号上引用我的Add-Content
行。
输出(编辑后的用户名):
cmdlet Add-Content at command pipeline position 1 Supply values for the following parameters: Value[0]: 1 Value[1]: 2 Value[2]: Add-Content : The filename, directory name, or volume label syntax is incorrect. At C:\Users\********\Documents\Workspace\Error_Monitor.ps1:40 char:5 + Add-Content \\nserver\scsi\HPQ\FailMonitor\$date\ + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : WriteError: (\\nserver\scsi\...tor\2016-10-18\:String) [Add-Content], IOException + FullyQualifiedErrorId : GetContentWriterIOError,Microsoft.PowerShell.Commands.AddContentCommand
如您所见,它将我的日期称为目录。作为参考,我的Add-Content
表达式位于第45行,即char 5.它将我的.txt文件视为目录并将其视为目录。文本文件根本不是目录。因为我已经清除了变量,所以它不是一个变量问题。我也没有在约会时试过任何括号,但那也没有。
为什么PowerShell表现得像这样?我错过了什么?