PS脚本一期班轮问题

时间:2019-05-20 19:16:44

标签: powershell

我有一个可以在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 :(得分:0)

知道实现一致的重要性。我能够解决问题,因为我解决了所有报价。对于任何有兴趣的人,这是最终的脚本。

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 }"

答案 1 :(得分:0)

您所拥有的是完整的脚本,而不是一线书。为什么不以格式正确的脚本形式提供它,以便可以轻松/直观地捕获这些东西。当我将您发布到编辑器中时,所有错误都是显而易见的。

重构示例:

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 
}