字符串结尾处的终结符

时间:2015-01-16 15:03:52

标签: powershell

我遇到的问题是我收到的terminatorexpectedatendofstring错误,其中包含以下用于删除非活动帐户的代码。目前我只测试日志记录:

Get-ADUser -Filter * -Properties accountauditstatus, displayname, distinguishedname, lastlogondate, lastlogondate, passwordlastset, created, enabled -SearchBase "OU=Vendors, DC=my, DC=domain, DC=com" |Where-Object {$_.accountauditstatus -ne "ignore: proxy account" -and $_.passwordLastSet –lt (Get-Date).AddDays(-7) -and $_.created -lt (get-date).adddays(-365) -and $_.lastlogondate -lt (get-date).adddays(-365) -and $_.Enabled -eq $true}|Select-object -First 10 |ForEach-Object {Write-output $_.name |Out-File -filepath c:\temp\log.log -append}

奇怪的是,如果我将命令粘贴到PowerShell提示符下它运行得很好,但是当我尝试以.ps1文件运行时,我收到错误。我不是一个PowerShell专家,所以我确信有一些我不知道的东西。任何帮助都会很棒!

2 个答案:

答案 0 :(得分:1)

逐步完成我发现powershell不喜欢这一行:

$_.passwordLastSet –lt (Get-Date).AddDays(-7)

我拿了

-lt (get-date).adddays(-365) 

从代码中的下一个位置复制并粘贴它,用7代替365并且代码有效。不确定问题究竟是什么,但代码现在正在运行。

感谢您的建议,Adriano。

答案 1 :(得分:0)

有同样的问题。

对于我来说,我是通过在我的.ps1文件中手动键入命令而不是复制粘贴来修复它的。完全相同的文本。据推测,这消除了导致错误的一些不可见的奇怪字符。

更具体地说

我写了一个脚本来清理旧文件,以释放一些空间。

Get-ChildItem -Path "C:\random\path" -Recurse | Where-Object LastWriteTime -lt (Get-Date).AddHours(-15) | Remove-Item -Recurse -WhatIf

将其直接粘贴到powershell中的复制效果很好,但是将其放在.ps1文件中却没有,并且出现了缺少终止符错误。

我要做的就是跟踪错误的确切位置(错误消息中的行和列),并以完全相同的方式重新编写命令块。

错误不断转移到另一个位置,因此我重复了这一过程,直到没有错误并且脚本成功运行为止。