|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - [решено] Не удалось преобразовать значение |
|
PowerShell - [решено] Не удалось преобразовать значение
|
Старожил Сообщения: 300 |
Для создания уникальной подписи в outlook скрипт дергает данные с AD на некоторых компьютерах консоль сыпет ошибками, ошибки на скриншоте.
powershel скрипт запускаю через gpo через конфигурацию пользователя с помощью cmd ("C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" -ExecutionPolicy bypass -file "путь к файлу.ps1"). Как преобразовать значение или это касяк из-за того что запускаю из cmd/ http://forum.oszone.net/attachment.p...1&d=1511528733 |
|
Отправлено: 16:07, 24-11-2017 |
Ветеран Сообщения: 1259
|
Профиль | Отправить PM | Цитировать |
Отправлено: 16:59, 24-11-2017 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Старожил Сообщения: 300
|
Профиль | Отправить PM | Цитировать Цитата Kazun:
|
|
Отправлено: 17:40, 24-11-2017 | #3 |
Старожил Сообщения: 300
|
Профиль | Отправить PM | Цитировать Цитата Kazun:
|
|
Отправлено: 13:23, 27-11-2017 | #4 |
Ветеран Сообщения: 1259
|
Профиль | Отправить PM | Цитировать Одно из свойств возвращает коллекцию объектов из Active Directory, т.к. в теме нет кода и проблемной строки, то логично, что вставить надо $ReplaceText.
|
|
Отправлено: 14:48, 27-11-2017 | #5 |
Старожил Сообщения: 300
|
Профиль | Отправить PM | Цитировать Цитата Kazun:
#скрипт создает или обновляет подпись в outlook у пользователя #Стартуем скрипт в режиме x86 if ($env:Processor_Architecture -ne "x86") { write-warning 'Стартуем PowerShell x86' &"$env:windir\syswow64\windowspowershell\v1.0\powershell.exe" -NonInteractive -NoProfile -File $myinvocation.Mycommand.path -ExecutionPolicy bypass #Удаление реестра Remove-ItemProperty -Path HKCU:\Software\Policies\Microsoft\office\16.0\common\mailsettings -Name NewSignature Remove-ItemProperty -Path HKCU:\Software\Policies\Microsoft\office\16.0\common\mailsettings -Name ReplySignature #Основные переменные $TemplateName = 'CorpSignature' $DomainName = 'puma.com' $SigSource = "\\$DomainName\netlogon\Signatures" #Переменные для локального и удаленного расположения подписи $AppData=(Get-Item env:appdata).value $SigPath = '\Microsoft\Signatures' $LocalSignaturePath = $AppData+$SigPath $RemoteSignaturePathFull = $SigSource+'\'+$TemplateName+'.docx' $fullPath = $LocalSignaturePath+'\'+$TemplateName+'.docx' #Получаем информацию для текущего пользователя из Active Directory $UserName = $env:username $Filter = "(&(objectCategory=User)(samAccountName=$UserName))" $Searcher = New-Object System.DirectoryServices.DirectorySearcher $Searcher.Filter = $Filter $ADUserPath = $Searcher.FindOne() $ADUser = $ADUserPath.GetDirectoryEntry() $ADDisplayName = "$(($ADUser | select -first 1).DisplayName)" $ADTitle = $ADUser.title $ADCompany = $ADUser.company $ADTelePhoneNumber = $ADUser.TelephoneNumber $ADMobile = $ADUser.mobile $ADWebSite = $ADUser.wWWHomePage $ADEmailAddress = $ADUser.mail #Копируем файл, если таковой отсутствует в целевой папке или если его хэш отличается от исходного If (!(Test-Path -Path $fullPath)) { Copy-Item $RemoteSignaturePathFull $LocalSignaturePath -Recurse -Force } Else { $Rem = Get-FileHash $RemoteSignaturePathFull -Algorithm SHA256 $loc = Get-FileHash $fullPath -Algorithm SHA256 Write-Host $Rem.Hash Write-Host $loc.Hash If ($Loc.Hash -ne $Rem.Hash) { Copy-Item $RemoteSignaturePathFull $LocalSignaturePath -Recurse -Force Write-Host "КОПИРУЮ" } Else { Write-Host "ХЭШИ СОВПАДАЮТ"} } $ReplaceAll = 2 $FindContinue = 1 $MatchCase = $False $MatchWholeWord = $True $MatchWildcards = $False $MatchSoundsLike = $False $MatchAllWordForms = $False $Forward = $True $Wrap = $FindContinue $Format = $False #Начинаем вытягивать данные из Active Directory [Void] [Reflection.Assembly]::LoadWithPartialName("Microsoft.Office.Interop.Word") $WordTmpl = New-Object -comObject Word.Application $WordTmpl.Visible = $False $objDoc = $WordTmpl.Documents.Open($fullPath) $objSelection = $WordTmpl.Selection #Определяем имя $Bookmark = "displayName" $ReplaceText = $ADDisplayName $RangeNew = $objDoc.Bookmarks.Item($Bookmark).Range $RangeNew.Text = $ReplaceText #Определяем должность $Bookmark = "title" $ReplaceText = $ADTitle $RangeNew = $objDoc.Bookmarks.Item($Bookmark).Range $RangeNew.Text = $ReplaceText #Название компании $Bookmark = "company" $ReplaceText = $ADCompany $RangeNew = $objDoc.Bookmarks.Item($Bookmark).Range $RangeNew.Text = $ReplaceText #Рабочий телефон с проверкой на заполнение атрибута $Bookmark = "telephoneNumber" If ($ADTelePhoneNumber.ToString() -eq '') { $ReplaceText = $DefaultTelephone } Else { $ReplaceText = $ADTelePhoneNumber.ToString() } $RangeNew = $objDoc.Bookmarks.Item($Bookmark).Range $RangeNew.Text = $ReplaceText <#Номер мобильного, учитывая то, что в тексте 2 раза упоминается mobile $FindText = "099" $ReplaceText = $ADMobile.ToString() $objSelection.Find.Execute($FindText,$MatchCase, $MatchWholeWord,$MatchWildcards,$MatchSoundsLike, $MatchAllWordForms,$Forward,$Wrap,$Format, $ReplaceText,$ReplaceAll) #> #Номер мобильного $Bookmark = "mobile" $ReplaceText = $ADMobile.ToString() $RangeNew = $objDoc.Bookmarks.Item($Bookmark).Range $RangeNew.Text = $ReplaceText #Веб-сайт пользователя $Bookmark = "wWWHomePage" $ReplaceText = $ADWebSite.ToString() $RangeNew = $objDoc.Bookmarks.Item($Bookmark).Range $Url = $objDoc.Hyperlinks.Add($RangeNew,$ReplaceText) #E-mail пользователя $Bookmark = "mail" $ReplaceText = $ADEmailAddress.ToString() $RangeNew = $objDoc.Bookmarks.Item($Bookmark).Range $Email = $objDoc.Hyperlinks.Add($RangeNew,'mailto:'+ $ReplaceText) Write-Host 'Начинаем сохранять подписи' #Сохраняем в HTML $saveFormat = [Enum]::Parse([Microsoft.Office.Interop.Word.WdSaveFormat], "wdFormatHTML"); $path = $LocalSignaturePath+'\'+$TemplateName+".htm" $WordTmpl.ActiveDocument.saveas([ref]$path, [ref]$saveFormat) #Сохраняем в RTF $saveFormat = [Enum]::Parse([Microsoft.Office.Interop.Word.WdSaveFormat], "wdFormatRTF"); $path = $LocalSignaturePath+'\'+$TemplateName+".rtf" $WordTmpl.ActiveDocument.SaveAs([ref] $path, [ref]$saveFormat) #Сохраняем в TXT $saveFormat = [Enum]::Parse([Microsoft.Office.Interop.Word.WdSaveFormat], "wdFormatText"); $path = $LocalSignaturePath+'\'+$TemplateName+".txt" $WordTmpl.ActiveDocument.SaveAs([ref] $path, [ref]$SaveFormat) $WordTmpl.ActiveDocument.Close() $WordTmpl.Quit() } #создания ключей в реестре New-ItemProperty -Path HKCU:\Software\Policies\Microsoft\office\16.0\common\mailsettings -Name NewSignature -PropertyType ExpandString -Value CorpSignature New-ItemProperty -Path HKCU:\Software\Policies\Microsoft\office\16.0\common\mailsettings -Name ReplySignature -PropertyType ExpandString -Value CorpSignature exit |
|
Отправлено: 14:40, 29-11-2017 | #6 |
Ветеран Сообщения: 1259
|
Профиль | Отправить PM | Цитировать |
Отправлено: 14:58, 29-11-2017 | #7 |
Старожил Сообщения: 300
|
Профиль | Отправить PM | Цитировать Эту часть кода где нужно поставить? Где получаем данные из AD
|
Отправлено: 04:51, 30-11-2017 | #8 |
Старожил Сообщения: 300
|
Профиль | Отправить PM | Цитировать Та же фигня, ладно Я пока забил на этот скрипт отправил бойца пускай физрой позанимался всего на 15 ПК настроить надо остальные подцепили
|
Отправлено: 16:02, 30-11-2017 | #9 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - [решено] Как получить значение параметра из реестра, добавить значение в текстовый файл etc.? | Dark Ange1 | Скриптовые языки администрирования Windows | 28 | 22-06-2022 14:37 | |
CMD/BAT - [решено] Не прописываемое значение... | Dodakaedr | Скриптовые языки администрирования Windows | 17 | 04-11-2016 15:57 | |
2012 R2 - Клиенту WinRM не удалось обработать запрос, так как не удалось разрешить имя сервера | Ua-life | Windows Server 2012/2012 R2 | 0 | 23-10-2015 11:38 | |
Загрузка - XP SP3. Значение «громкость» сбрасывается в среднее значение при перезагрузке. | mitkadritka | Microsoft Windows 2000/XP | 9 | 24-02-2012 20:37 | |
Windows не удалось завершить проверку и Не удалось запустить дефрагментатор диска | Wgang | Лечение систем от вредоносных программ | 5 | 17-08-2009 21:54 |
|