Сценарий PowerShell не может установить для местоположения значение 8.3 имя файла временное местоположение

У меня проблемы с получением журнала обновлений Windows на сервере 2016. Как описано здесь Server 2016 теперь регистрирует журналы обновлений Windows по-другому и для просмотра журналы, необходимые для запуска команды Powershell из модуля WindowsUpdate под названием Get-WindowsUpdateLog.

Сценарию необходимо установить кэш символов, и он делает это, выполняя 'Set-Location $ SYM_CACHE' . Переменная кэша символов установлена ​​ранее в этом фрагменте следующим образом:

$WORKDIR = "$env:TEMP\WindowsUpdateLog"
$SYM_CACHE = "$WORKDIR\SymCache"

Проблема, которую я получаю, заключается в том, что мое административное имя пользователя - 'secur.tima', а переменная temp установлена ​​с версией имени файла 8.3, то есть 'C: \ Users \ SECUR ~ 1.TIM \ AppData \ Local \ Temp \ 4 '

Когда сценарий пытается установить это в качестве местоположения, он терпит неудачу с этой ошибкой:

Set-Location : An object at the specified path C:\Users\SECUR~1.TIM does not exist.
At 

    C:\Windows\system32\WindowsPowerShell\v1.0\Modules\WindowsUpdate\WindowsUpdateLog.psm1:194 char:5
    +     Set-Location $SYM_CACHE
    +     ~~~~~~~~~~~~~~~~~~~~~~~
        + CategoryInfo          : InvalidArgument: (:) [Set-Location], PSArgumentException
        + FullyQualifiedErrorId : Argument,Microsoft.PowerShell.Commands.SetLocationCommand

Я нашел это в StackOverflow: https://stackoverflow.com/questions/10782739/how-to-change-to-temp-directory-in-powershell

Однако это показывает, как решить проблему, изменив сценарий. Хотя я мог бы изменить сценарий, предоставленный Microsoft, мне интересно, есть ли способ заставить эту работу работать на стороне сервера или изменить способ обработки PowerShell 8. 3 имени файла?

Ура

Тим

0
задан 23 May 2017 в 14:33
3 ответа

Получите длинную версию имени файла 8.3 и используйте ее вместо нее. Либо:

$WORKDIR = (Get-Item "$env:TEMP\WindowsUpdateLog").FullName
$SYM_CACHE = "$WORKDIR\SymCache"

Или:

Set-Location (Get-Item $SYM_CACHE).FullName

Подробнее об этом обходном пути можно прочитать в моем ответе на SU.

0
ответ дан 22 August 2020 в 18:20

Сделать пакетный файл, который делает CD с временным каталогом, а затем вызвать скрипт Powerhell из пакетного файла?

cd %temp%\windowsupdatelog
powershell.exe -f c:\dirname\script.ps1
0
ответ дан 5 December 2019 в 08:29

Эта техническая статья , кажется, указывает на то, что PowerShell не понимает 8.3 имен файлов.

.
0
ответ дан 5 December 2019 в 08:29

Теги

Похожие вопросы