Копирование журналов в общую сетевую папку не работает - PullRequest
0 голосов
/ 01 октября 2019

Копирование журналов в общую сетевую папку не работает

Я нашел приведенный ниже скрипт в Интернете и изменил его в соответствии со своими потребностями. Сценарий генерирует «logs.zip» в «SystemRoot \ CCM \ logs», как и ожидалось, но когда я пытаюсь скопировать «logs.zip» на сетевой диск, происходит сбой

Я использую приведенную ниже команду дляскопируйте файл «logs.zip» в «\ networkhare \ software \ Logs»

 $Computerlogshare = “\\networkshare\software\Logs” + $env:Computername
Copy-Item $env:SystemRoot\CCM\Logs\logs.zip -Destination $Computerlogshare -force 


# Script to run SetupDiag to troubleshoot Windows 10 Setup
# Download SetupDiag.exe from https://go.microsoft.com/fwlink/?linkid=870142 and place in same directory as this script

# Get the CCM Logs location from registry
$LogLocation = Get-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\CCM\Logging\@Global" -Name LogDirectory | Select -ExpandProperty LogDirectory
#$LogLocation = "$env:SystemRoot\CCM\Logs"

# Get the location we're running from (or use $PSScriptRoot)
$ScriptPath = Split-Path $MyInvocation.MyCommand.Path -Parent



# Check that .Net 4.6 minimum is installed
If (Get-ChildItem "HKLM:SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full\" | Get-ItemPropertyValue -Name Release | ForEach-Object { $_ -ge 393295 })
{
    Try
    {
        Start-Process -FilePath "$ScriptPath\SetupDiag.exe" -ArgumentList "/Output:$LogLocation\SetupDiagResults.log" -Wait -ErrorAction Stop
    }
    Catch
    {
       "[ERROR] There was an error starting SetupDiag.exe: $_" | Out-file -FilePath "$LogLocation\SetupDiagResults.log" -Force 
    }
}
Else
{
    "[ERROR] .Net Framework 4.6 is required to run SetupDiag.exe" | Out-file -FilePath "$LogLocation\SetupDiagResults.log" -Force
}

 $Computerlogshare = “\\networkshare\software\Logs” + $env:Computername
    Copy-Item $env:SystemRoot\CCM\Logs\logs.zip -Destination $Computerlogshare -force 

Ответы [ 2 ]

0 голосов
/ 03 октября 2019

Вы можете попытаться изменить путь на:

$Computerlogshare = Join-Path -Path "Microsoft.Powershell.Core\FileSystem::\\networkshare\software\Logs" -ChildPath $env:Computername
0 голосов
/ 01 октября 2019

Прежде всего, НЕ ИСПОЛЬЗУЙТЕ фигурные «умные кавычки» в коде и заменяйте их прямыми.
Затем вы объединяете путь, используя "\\networkshare\software\Logs" + $env:Computername, что приводит к \\networkshare\software\LogsYourMachineName.

Полагаю, вам нужно использовать Join-Path , поэтому конечный путь назначения будет
\\networkshare\software\Logs\YourMachineName. Вам нужно проверить, существует ли этот путь, а если нет, создать его перед выполнением Copy-Item.

Примерно так:

$Computerlogshare = Join-Path -Path "\\networkshare\software\Logs" -ChildPath $env:Computername
if (!(Test-Path -Path $Computerlogshare -PathType Container)) {
    New-Item -Path $Computerlogshare -ItemType Directory -Force | Out-Null
}
Copy-Item "$env:SystemRoot\CCM\Logs\logs.zip" -Destination $Computerlogshare -Force 

Надеюсь, что поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...