2015-10-07 2 views
0

Я пишу сценарий PowerShell для отключения и перемещения пользователей с помощью AD. эта часть отлично работает. Однако я хотел бы регистрировать каждое событие в журнале событий. Командлет Write-EventLog отлично работает при вводе вручную.PowerShell Write-EventLog CmdLet работает вручную, а не в скрипте

Write-EventLog –LogName ManageAD –Source “ManageUsers Script” –EntryType Information –EventID 1 –Message “This is a test message" 

Однако, когда я добавляю командлет к скрипту, это ошибки.

Write-EventLog –LogName ManageAD –Source “ManageUsers Script” –EntryType Information –EventID 1 –Message “User ” + $SAM + " has been disabled" 

Write-EventLog : A positional parameter cannot be found that accepts argument 'Scriptâ??'. 
At C:\test\ManageUsers.ps1:12 char:16 
+  Write-EventLog <<<< â?"LogName ManageAD â?"Source â?oManageUsers Scriptâ?? â?"EntryType Information â?"EventID 
â?"Message â?oUser â?? + $SAM + " has been disabled" 
    + CategoryInfo   : InvalidArgument: (:) [Write-EventLog], ParameterBindingException 
    + FullyQualifiedErrorId : PositionalParameterNotFound,Microsoft.PowerShell.Commands.WriteEventLogCommand 

Любые предложения приветствуются.

+0

Если вы сохраняете скрипты в кодировке UTF8, чем использовать спецификацию. PowerShell не обнаруживает UTF8, если в файле нет спецификации. – PetSerAl

+0

@PetSerAl Итак, если файл был закодирован с помощью UTF8, и спецификация присутствовала, это было бы нормально? Это верно для других кодировок или просто UTF8? – Matt

+0

@Matt Для меня PowerShell корректно обрабатывает специальные кавычки в тире, пока он может правильно их прочитать из файла. Я тестирую только UTF8 и UTF16, которые правильно определены из спецификации. – PetSerAl

ответ

2

Хотите сказать, что простой ответ - у вас есть умные цитаты в вашем коде. Они пришли от того, где вы первоначально скопировали этот код или продукт вашей тестовой среды. В любом случае вам нужно следить за этими педерастами.

Write-EventLog –LogName ManageAD –Source “ManageUsers Script” –EntryType Information –EventID 1 –Message “User ” + $SAM + " has been disabled" 

Должно быть вместо этого.

Write-EventLog –LogName ManageAD –Source "ManageUsers Script" –EntryType Information –EventID 1 –Message "User " + $SAM + " has been disabled" 

Я хотел бы отметить от ошибки, которую я вижу другие артефакты, а ...

â? " LogName ManageAD â?"

Это заставляет меня задаться вопросом, если переносы являются длинным, как ЕСТ-тир (Возвращается к предыдущему вопросу о вашем выборе редактора!).

Обратите внимание, что разница между дефисом и двумя штрихами - это -. Также сделайте свою тире против основного дефиса. Справа находится дефис.

enter image description here

Был код работает внутри ISE, может быть, и вы запускали скрипт в обычной консоли?

Смежные вопросы