在需要它的计算机上推送许可证文件
Push licence file on computer who need it
环境:
- 系统中心配置管理器 1810
- 工作站 = Windows 10 1709 / Windows 7 SP1
- 具有完成任务的附加脚本的特定应用程序
实现方式:
- 未经许可部署包
推送许可文件
- 停止服务
- 使用 SCCM 大头钉阅读许可证并在必要时推送它
- 开始服务
数以百计的计算机受到影响,编辑没有提交指南来完成它而不重新启动计算机而不提示最终用户。
我们正在使用 SCCM 来部署和检查包(WMI 查询、注册表等)。我们可以使用,powershell to query more objects,比如读取许可证文件来检查它是否是好的。
阅读许可是这样完成的:
if ((Get-Content "C:\Program Files\XXX\X.LIC") -contains serial_no=XXXXX")) {
Write-Host "License OK"
}
如果许可证不是很好,则会在工作站上启动一点(在某个文件夹中,例如 C:\Windows\CCMCACHE\a)
喜欢
If (Test-Path ("C:\Program Files (x86)\NetSupport\NetSupport School"))
{
If (Test-Path ("C:\Program Files (x86)\XXX\X.LIC"))
{
Rename-Item -Path "C:\Program Files (x86)\XXX\X.LIC" -NewName ("X.LIC." + (Get-Date).ToString("yyyyMMdd")) -Force
}
Copy-Item -Source $PSScriptRoot\X.LIC -Destination ("C:\Program Files (x86)\XXX") -Force
}
ElseIf(Test-Path ("C:\Program Files\XXX"))
{
If (Test-Path ("C:\Program Files\XXX\X.LIC"))
{
Rename-Item -Path "C:\Program Files\XXX\X.LIC" -NewName ("X.LIC." + (Get-Date).ToString("yyyyMMdd")) -Force
}
Copy-Item -Source $PSScriptRoot\X.LIC -Destination ("C:\Program Files\XXX") -Force
}
我需要 PowerShell v3 吗?我怎样才能用 PSv2 做到这一点?
首先,Copy-Item 是错误的 -> -Path 而不是 -Source
并且,在 Windows PowerShell 2.0 中,$PSScriptroot 仅在脚本模块 (.psm1) 中有效。从 Windows PowerShell 3.0 开始,它在所有脚本中都有效。
所以,我是这样做的:
$scriptpath = split-path -parent $MyInvocation.MyCommand.Definition
If (Test-Path ("C:\Program Files (x86)\XXX"))
{
If (Test-Path ("C:\Program Files (x86)\XXX\X.LIC"))
{
Rename-Item -Path "C:\Program Files (x86)\XXX\X.LIC" -NewName ("NSM.LIC." + (Get-Date).ToString("yyyyMMdd")) -Force
}
Copy-Item -Path ($scriptpath + "\X.LIC") -Destination ("C:\Program Files (x86)\XXX") -Force
}
ElseIf(Test-Path ("C:\Program Files\XXX"))
{
If (Test-Path ("C:\Program Files\XXX\X.LIC"))
{
Rename-Item -Path "C:\Program Files\XXX\X.LIC" -NewName ("X.LIC." + (Get-Date).ToString("yyyyMMdd")) -Force
}
Copy-Item -Path ($scriptpath + "\X.LIC") -Destination ("C:\Program Files\XXX") -Force
}
感谢您的帮助^^
环境:
- 系统中心配置管理器 1810
- 工作站 = Windows 10 1709 / Windows 7 SP1
- 具有完成任务的附加脚本的特定应用程序
实现方式:
- 未经许可部署包
推送许可文件
- 停止服务
- 使用 SCCM 大头钉阅读许可证并在必要时推送它
- 开始服务
数以百计的计算机受到影响,编辑没有提交指南来完成它而不重新启动计算机而不提示最终用户。
我们正在使用 SCCM 来部署和检查包(WMI 查询、注册表等)。我们可以使用,powershell to query more objects,比如读取许可证文件来检查它是否是好的。
阅读许可是这样完成的:
if ((Get-Content "C:\Program Files\XXX\X.LIC") -contains serial_no=XXXXX")) {
Write-Host "License OK"
}
如果许可证不是很好,则会在工作站上启动一点(在某个文件夹中,例如 C:\Windows\CCMCACHE\a) 喜欢
If (Test-Path ("C:\Program Files (x86)\NetSupport\NetSupport School"))
{
If (Test-Path ("C:\Program Files (x86)\XXX\X.LIC"))
{
Rename-Item -Path "C:\Program Files (x86)\XXX\X.LIC" -NewName ("X.LIC." + (Get-Date).ToString("yyyyMMdd")) -Force
}
Copy-Item -Source $PSScriptRoot\X.LIC -Destination ("C:\Program Files (x86)\XXX") -Force
}
ElseIf(Test-Path ("C:\Program Files\XXX"))
{
If (Test-Path ("C:\Program Files\XXX\X.LIC"))
{
Rename-Item -Path "C:\Program Files\XXX\X.LIC" -NewName ("X.LIC." + (Get-Date).ToString("yyyyMMdd")) -Force
}
Copy-Item -Source $PSScriptRoot\X.LIC -Destination ("C:\Program Files\XXX") -Force
}
我需要 PowerShell v3 吗?我怎样才能用 PSv2 做到这一点?
首先,Copy-Item 是错误的 -> -Path 而不是 -Source
并且,在 Windows PowerShell 2.0 中,$PSScriptroot 仅在脚本模块 (.psm1) 中有效。从 Windows PowerShell 3.0 开始,它在所有脚本中都有效。
所以,我是这样做的:
$scriptpath = split-path -parent $MyInvocation.MyCommand.Definition
If (Test-Path ("C:\Program Files (x86)\XXX"))
{
If (Test-Path ("C:\Program Files (x86)\XXX\X.LIC"))
{
Rename-Item -Path "C:\Program Files (x86)\XXX\X.LIC" -NewName ("NSM.LIC." + (Get-Date).ToString("yyyyMMdd")) -Force
}
Copy-Item -Path ($scriptpath + "\X.LIC") -Destination ("C:\Program Files (x86)\XXX") -Force
}
ElseIf(Test-Path ("C:\Program Files\XXX"))
{
If (Test-Path ("C:\Program Files\XXX\X.LIC"))
{
Rename-Item -Path "C:\Program Files\XXX\X.LIC" -NewName ("X.LIC." + (Get-Date).ToString("yyyyMMdd")) -Force
}
Copy-Item -Path ($scriptpath + "\X.LIC") -Destination ("C:\Program Files\XXX") -Force
}
感谢您的帮助^^