2015-08-03 2 views
0

Я писал этот код, чтобы захватить вновь созданное имя samaccount и создать домашнюю папку для него! им лицо этой проблемы -Передача строковой переменной в New-item -path

$ADServer= 'xyz' 

$c = Get-EventLog Security -computername $ADServer -After (Get-Date).AddHours(-24) | Where-Object { $_.EventID -eq 4720 -and $_.Message -match "sam account name:\s+(.*)"} | ForEach-Object { $matches[1] } | Select-Object -First 1 

New-Item -ItemType Directory -Path "\\abc\$c" 

это показывает ошибку - недопустимые символы в строке, как я могу создать папку того же, что я захватил в $c?

+0

Что содержит '$ c'? Я подозреваю, что в данный момент это объект, поэтому вам может потребоваться выбрать конкретное свойство для этого, чтобы работать. – arco444

+0

$ c содержит имя samaccount только что созданного пользователя AD (U может проверить это в журнале событий для eventid - 4720) –

+0

Можете ли вы изменить вопрос и опубликовать весь вывод на консоль при вводе '$ c'? Если он отображается в таблице, укажите, что такое столбцы. – arco444

ответ

1

Попробуйте один:

New-Item -ItemType Directory -Path "\\abc\c$\$($c.Trim())" 

или:

$c = $c.trim() 
New-Item -ItemType Directory -Path "\\abc\$c" 

Причина: У вас есть дополнительное пространство письмо в конце концов, именно поэтому он выходит из строя,

Используйте $c.trim() или $c -replace "\s", чтобы удалить пробел

+0

GREAT! это ответ, спасибо! sheesh, как я пропустил это! –

+0

'trim()' будет лучше, чем ваш '-replace' здесь, так как в пути могут быть законные пробелы. Вы можете сделать '-replace '\ s + $" 'на всякий случай. – Matt

+0

Это хороший момент, но в сценарии SAMAccountName Space нет возможности – Avshalom

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