概括:
我有大约 30 个用户。我正在寻找一种简单的方法来更新和管理这些用户的 powershell 脚本,而无需强迫他们下载或运行命令进行更新。我有一个隐式远程服务器,但是由于某些限制,我无法从中运行某些脚本。例如,一个脚本依赖于在用户证书存储中查找特定证书并枚举该值来访问 Web 应用程序。这无法通过隐式远程处理完成,因为远程服务器上不存在用户证书存储。
问题:
有没有一种简单的方法来管理用户的 powershell 脚本而不强迫他们进行更新?
答案1
您真正需要的是“版本控制”,例如 Github 或 Team foundation 服务器。它们涉及更多内容,需要用户与软件进行交互。除此之外,下面是 powershell 管理的一个非常粗略的概述。
这并不完整,但可以让您入门。这需要进行一些修改以适合您的环境,但这将是一种快速而粗略的在用户目录中查找丢失或修改的脚本的方法。它远不能处理冲突检查,但真正的版本控制产品会更好地完成这项工作。如果这是您所寻找的,请告诉我。
$serverScriptPath = "C:\some\path"
$computers = "Name001","Name002","Name003"
$computers | ForEach-Object {
$computerName = $_
# Get Listing of user and server scripts
$userScripts = Get-ChildItem -Path "$computerName\C$\common\script\dir"
$serverScripts = Get-ChildItem -Path $centralScriptPath
# Start with an empty array
$missingScripts = @()
# Find missing or updated scripts for user
$missingScripts += $userScripts | Compare-Object $serverScripts -Property Name,LastWriteTime | Where-Object {$_.SideIndicator -eq "<="}
# Pull each missing script to central location
$missingScripts | ForEach-Object {
Copy-Item "$computerName\C$\common\script\dir\$_" $serverScriptPath -Force
}
}