Начиная писать Powershell сценарии (очень новый), потому что SCCM стремится лучше реагировать на них (как клиент и сервер) Так с вышеизложенным вот мой первый сценарий:Powershell ForEach петля со встроенным IF заявления
#Changes the 'ProvisioningMode' Key in the registry to False
$ProvisiongMode = New-ItemProperty -Path Registry::HKLM\SOFTWARE\Microsoft\CCM\CcmExec -Name ProvisioningMode -Value False -Force
#Clears or 'nulls' the SystemTaskExcludes key in the registry
$SystemTaskExludes = New-ItemProperty -Path Registry::HKLM\SOFTRWARE\Microsoft\CCM\CcmExec -Name SystemTaskExcludes - Value "" - Force
#----------------------------------------------------------------------------------------------
$Success = "C:\Path\to.log"
$Failure = "C:\Path\to.log"
$Computers = Import-Csv "C:\Path\to.csv"
$SearchStr = Get-ItemProperty -Path Registry::HKLM\SOFTWARE\Microsoft\CCM\CcmExec | select-object ProvisioningMode
$Online = Test-Conntection -Computername $ComputerName -Count 1 -Quiet
ForEach ($ComputerName in $Computers)
if ($Online -eq 'False')
{
Write-Output $ComputerName`t'Connection Failed' >> $Failure
}
Else
{
if ($SearchStr -eq True)
{
$ProvisioningMode
$SystemTaskExcludes
}
}
#Second Check
if ($SearchStr -eq 'False')
{
Write-Output $ComputerName`t'Registry has been changed' >> $Success
}
Этот вопрос относится к переменной $Online
. Я хотел бы посмотреть, реагирует ли компьютер на ping, если это правда, затем перейдите к запуску $ProvisioningMode
и $SystemTaskExclude
. Затем другая проблема запрашивает этот ключ, чтобы проверить, не изменилось ли оно. Проблема с этим одним является $SearchStr = Get-ItemProperty -Path Registry::HKLM\SOFTWARE\Microsoft\CCM\CcmExec | select-object ProvisioningMode
возвращается
ProvisionMode
-----------------
False
И я не могу Grab только данные false
. Как я уже говорил; очень новый в powershell и пишущий что-то, что я буду использовать, помогает мне учиться.
Edit: Я Пытались это
ForEach ($Name in $Computers)
{
Test-Connection -BufferSize 2 -Computername $Name.ComputerName -Count 1 -Quiet | Write-Output $Online
}
if ($Online -eq 'True') {Write-Output $Name`t'Computer is online' >> C:\Online.txt}
И многие вариации одного и того же.
Test-Connection -BufferSize 2 -Computername $Name.ComputerName -Count 1 -Quiet
Возвращает данные, который является то, что я хочу, но мне нужно ввести, что в If
заявление и по-прежнему сохраняют $Name
для $StringStr
и лог-файлов.
Те из вас, кто интересуется, вынимает клиент из режима обеспечения при работе с экранным меню. Он исправляет проблему «Нет самоподписанного сертификата».
Прочитать описание «embedded» -tag – Olaf
haha umm предполагалось быть «встроенными, если утверждения». Мой плохой, Олаф. – Benny