【发布时间】:2015-07-20 20:39:09
【问题描述】:
开始编写 powershell 脚本(非常新),因为 SCCM 倾向于更好地响应它们(客户端和服务器) 因此,上述内容是我的第一个脚本:
#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
我不能只获取false 数据。
就像我说的那样;在 powershell 上非常新,写一些我将使用的东西可以帮助我学习。
编辑:我尝试过的是
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 语句中,并且仍然为 $StringStr 和日志文件保留 $Name。
你们中的一些人想知道,这会使客户端在运行 OSD 时退出配置模式。它修复了“无自签名证书”问题。
【问题讨论】:
-
阅读“嵌入式”标签的描述
-
哈哈嗯,它应该是“嵌入的 if 语句”。我的错,奥拉夫。
标签: powershell if-statement foreach