PS скрипт одного лайнера выпуска - PullRequest
0 голосов
/ 20 мая 2019

У меня есть один вкладыш, который работает в PowerShell.

If (Get-ItemProperty -Path 'HKLM:\SOFTWARE\SCCM' -ErrorAction SilentlyContinue) {} Else {$RegistryPath = "HKLM:\SOFTWARE\"; $NewRegKey = "SCCM"; New-Item -Path $RegistryPath -Name $NewRegKey -Force; $NewRegKeyPath = "HKLM:\SOFTWARE\SCCM"; $KeyName = "W10_IPU_Attempts"; $Value = "0"; New-ItemProperty -Path $NewRegKeyPath -Name $KeyName -Value $Value -PropertyType DWORD -Force | Out-Null}; $i= $Value =(Get-Itemproperty 'HKLM:\SOFTWARE\SCCM').W10_IPU_Attempts; If ($i -eq $value){ $i++; Set-ItemProperty -Path 'HKLM:\SOFTWARE\SCCM' -Name W10_IPU_Attempts -Value $i } else { $i++; Set-ItemProperty -Path 'HKLM:\SOFTWARE\SCCM' -Name W10_IPU_Attempts -Value $i }

Теперь, когда я добавляю следующее и проверяю его, я получаю ошибки в smsts.log, что это неправильная функция.При запуске через CMD я получаю «В строке отсутствует терминатор» C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -NoProfile -ExecutionPolicy ByPass -Command " & If (Get-ItemProperty -Path 'HKLM:\SOFTWARE\SCCM' -ErrorAction SilentlyContinue) {} Else {$RegistryPath = "HKLM:\SOFTWARE\"; $NewRegKey = "SCCM"; New-Item -Path $RegistryPath -Name $NewRegKey -Force; $NewRegKeyPath = "HKLM:\SOFTWARE\SCCM"; $KeyName = "W10_IPU_Attempts"; $Value = "0"; New-ItemProperty -Path $NewRegKeyPath -Name $KeyName -Value $Value -PropertyType DWORD -Force | Out-Null}; $i= $Value =(Get-Itemproperty 'HKLM:\SOFTWARE\SCCM').W10_IPU_Attempts; If ($i -eq $value){ $i++; Set-ItemProperty -Path 'HKLM:\SOFTWARE\SCCM' -Name W10_IPU_Attempts -Value $i } else { $i++; Set-ItemProperty -Path 'HKLM:\SOFTWARE\SCCM' -Name W10_IPU_Attempts -Value $i }"

Я не могу найти, где мне не хватает, чтобы завершить это.Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 20 мая 2019

То, что у вас есть, это полный скрипт, а не однострочный. Почему бы не предоставить его в виде хорошо отформатированного сценария, чтобы такие вещи можно было легко / наглядно увидеть. В тот момент, когда я разместил сообщение в редакторе, все ошибки стали очевидны.

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

If (Get-ItemProperty -Path 'HKLM:\SOFTWARE\SCCM' -ErrorAction SilentlyContinue) 
{
    # Do nothing
}
Else 
{
    $RegistryPath = 'HKLM:\SOFTWARE\'
    $NewRegKey = 'SCCM'

    New-Item -Path $RegistryPath -Name $NewRegKey -Force

    $NewRegKeyPath = 'HKLM:\SOFTWARE\SCCM'
    $KeyName = 'W10_IPU_Attempts'
    $Value = '0'

    $newItemPropertySplat = @{
        Path = $NewRegKeyPath
        PropertyType = 'DWORD'
        Name = $KeyName
        Force = $true
        Value = $Value
    }
    New-ItemProperty @newItemPropertySplat | 
    Out-Null
}

$i = $Value = (Get-Itemproperty 'HKLM:\SOFTWARE\SCCM').W10_IPU_Attempts

If ($i -eq $value)
{ 
    $i++
    Set-ItemProperty -Path 'HKLM:\SOFTWARE\SCCM' -Name W10_IPU_Attempts -Value $i 
} 
else 
{ 
    $i++
    Set-ItemProperty -Path 'HKLM:\SOFTWARE\SCCM' -Name W10_IPU_Attempts -Value $i 
}
0 голосов
/ 20 мая 2019

Пришло понимание, как важно быть последовательным. Я могу решить проблему, потому что я исправил все свои цитаты. Для всех, кто заинтересован, это последний сценарий.

C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -NoProfile -ExecutionPolicy ByPass -Command "If (Get-ItemProperty -Path 'HKLM:\SOFTWARE\SCCM' -ErrorAction SilentlyContinue) {} Else {$RegistryPath = 'HKLM:\SOFTWARE\'; $NewRegKey = 'SCCM'; New-Item -Path $RegistryPath -Name $NewRegKey -Force; $NewRegKeyPath = 'HKLM:\SOFTWARE\SCCM'; $KeyName = 'W10_IPU_Attempts'; $Value = '0'; New-ItemProperty -Path $NewRegKeyPath -Name $KeyName -Value $Value -PropertyType DWORD -Force | Out-Null}; $i= $Value =(Get-Itemproperty 'HKLM:\SOFTWARE\SCCM').W10_IPU_Attempts; If ($i -eq $value){ $i++; Set-ItemProperty -Path 'HKLM:\SOFTWARE\SCCM' -Name W10_IPU_Attempts -Value $i } else { $i++; Set-ItemProperty -Path 'HKLM:\SOFTWARE\SCCM' -Name W10_IPU_Attempts -Value $i }"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...