我遇到的问题是我收到的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专家,所以我确信有一些我不知道的东西。任何帮助都会很棒!
答案 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文件中却没有,并且出现了缺少终止符错误。
我要做的就是跟踪错误的确切位置(错误消息中的行和列),并以完全相同的方式重新编写命令块。
错误不断转移到另一个位置,因此我重复了这一过程,直到没有错误并且脚本成功运行为止。