2015-04-02 4 views
-1

Я создаю скрипт, который запускается при создании новой учетной записи (OnEvent 4720). Я беру данные из события и передаю его как параметр сценарию powershell. Проблема в том, что некоторые имена имеют апостроф и не передаются в качестве параметра.EventLog и powershell

TaskConfig:

... 
<Value name="DisplayName">Event/EventData/Data[@Name='DisplayName']</Value> 
... 

TaskAction:

<Command>C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe</Command> 
    <Arguments>-Command c:\script\SendEmailNA.ps1 -SubjectUserSid '$(SubjectUserSid)' -SubjectUserName '$(SubjectUserName)' -SubjectDomainName '$(SubjectDomainName)' -SubjectLogonId '$(SubjectLogonId)' -TargetSid '$(TargetSid)' -TargetUserName '$(TargetUserName)' -TargetDomainName '$(TargetDomainName)' -SamAccountName '$(SamAccountName)' -DisplayName '$(DisplayName)' -UserPrincipalName '$(UserPrincipalName)' -HomeDirectory '$(HomeDirectory)' -HomePath '$(HomePath)' -ScriptPath '$(ScriptPath)' -ProfilePath '$(ProfilePath)' -UserWorkstations '$(UserWorkstations)' -PasswordLastSet '$(PasswordLastSet)' -AccountExpires '$(AccountExpires)' -PrimaryGroupId '$(PrimaryGroupId)' -AllowedToDelegateTo '$(AllowedToDelegateTo)' -OldUacValue '$(OldUacValue)' -NewUacValue '$(NewUacValue)' -UserAccountControl '$(UserAccountControl)' -UserParameters '$(UserParameters)' -SidHistory '$(SidHistory)' -LogonHours '$(LogonHours)' -PrivilegeList '$(PrivilegeList)'</Arguments> 

SendEmailNA.ps1:

param($SubjectUserSid, $SubjectUserName, $SubjectDomainName, $SubjectLogonId, $TargetSid, $TargetUserName, $TargetDomainName, ` 
    $SamAccountName, $DisplayName, $UserPrincipalName, $HomeDirectory, $HomePath, $ScriptPath, $ProfilePath, $UserWorkstations, ` 
    $PasswordLastSet, $AccountExpires, $PrimaryGroupId, $AllowedToDelegateTo, $OldUacValue, $NewUacValue, $UserAccountControl, ` 
    $UserParameters, $SidHistory, $LogonHours, $PrivilegeList) 

И тогда я взять переменную построить тело электронной почты. Все работает отлично, когда это «Джон Ли», но когда это «Джон О'Коннелл», он терпит неудачу. У кого-нибудь есть идея, как передать параметр с апострофом?

Thanks

+2

только цитата с двойными кавычками должна делать трюк 'SubjectUserName '$ (SubjectUserName)'' -> 'SubjectUserName" $ ​​(SubjectUserName) "' –

+0

'' $ (SubjectUserName) ''будет просто' $ (SubjectUserName) 'из-за [одиночных кавычек] (http://windowsitpro.com/powershell/variable-expansion-powershell-expressions). –

+0

Оба решения не работают. Я получаю ошибку в планировщике задач: 'Task Scheduler успешно завершила задачу« \ создана учетная запись », экземпляр« {8988d714-1a94-4b86-bb88-b02ad87114a3} », действие« C: \ Windows \ System32 \ WindowsPowerShell \ v1. 0 \ powershell.exe "с кодом возврата 1.' – dkmnt

ответ

0

Найдено ответов.

Он не будет работать с файлом ps1, но вы можете использовать PowerGUI для компиляции скрипта в .exe, а затем он передаст аргумент с апострофом.