所以我使用powershell脚本构建一个Json文件,以确保所有域名网站中的所有软件版本都是最新的(几个不同的数据中心使用不同的域名。我有一个特殊的vpn它已经信任所有域,所以从我的笔记本电脑我可以毫无问题地访问所有域。
我起初认为这是一个凭据问题,所以我删除了那部分,但它似乎是网络级别,我不知道为什么我可以RDP,浏览到网络路径等。
连接到远程服务器servera失败,出现以下错误 消息:WinRM无法处理请求。以下错误 使用Kerberos身份验证时发生:找不到计算机 servera上。验证计算机是否存在于网络上并且确实存在 提供的名称拼写正确。有关更多信息,请参阅 about_Remote_Troubleshooting帮助主题。 + CategoryInfo:OpenError:(servera:String)[],PSRemotingTransportException + FullyQualifiedErrorId:NetworkPathNotFound,PSSessionStateBroken
[CmdletBinding()]
Param (
[Parameter(ValueFromPipeline = $true,
ValueFromPipelinebyPropertyName = $true)]
[Alias("Servers")]
[string[]]$Name = (Get-Content "c:\versioncheck\servers.txt"),
[string]$Credential = "svcStatusCheck",
[string]$PathToCred = "c:\versioncheck"
)
Begin {
Function Get-Credentials {
Param (
[String]$AuthUser = $env:USERNAME
)
$Key = [byte]29, 36, 18, 74, 72, 75, 85, 52, 73, 44, 0, 21, 98, 76, 99, 28
$CredFile = $AuthUser.Replace("\", "~")
$File = $PathToCred + "\Credentials-$CredFile.crd"
If (-not (Test-Path $File)) {
(Get-Credential $AuthUser).Password | ConvertFrom-SecureString -Key $Key | Set-Content $File
}
$Password = Get-Content $File | ConvertTo-SecureString -Key $Key
$AuthUser = (Split-Path $File -Leaf).Substring(12).Replace("~", "\")
$AuthUser = $AuthUser.Substring(0, $AuthUser.Length - 4)
$Credential = New-Object System.Management.Automation.PsCredential($AuthUser, $Password)
Return $Credential
}
}
Process {
$AllServers = @()
ForEach ($Computer in $Name) {
$AllServers += $Computer
}
}
End {
ForEach ($Computer in $AllServers) {
Write-Host "$(Get-Date): Script begins!"
write-host "Checking $computer"
Invoke-Command -cn $computer -credential $Credential -ScriptBlock { Get-ItemProperty HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* | Select-Object @{Label = "ServerName"; Expression = {$env:computername}}, DisplayName, Publisher, DisplayVersion,InstallDate | Where-object { $_.Publisher -match "Software" } | ConvertTo-Json -depth 100 | Out-File "c:\versioncheck\InstalledApps.json"}
}
}
答案 0 :(得分:0)
您需要在使用enable-psremoting
cmdlet接收命令的远程计算机上启用psremoting。此cmdlet准备计算机以接收从WS-MAN发送的Windows Powershell命令