我正在尝试修改PS脚本,但仍然无法弄清楚可能出现的问题。
cp "image.jpg" \\<IP>\C$
$RemoteReg = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey('Users', "<IP>")
$WallPaper= $RemoteReg.OpenSubKey("S-1-5-21-780093305-1579027723-3042286928-500\Control Panel\Desktop",$True)
$WallPaper.SetValue("Wallpaper","C:\image.jpg")
但我需要使用变量SID。 所以我制作了这个剧本:
$hostname = Read-Host 'enter hostname of station'
$username = Read-Host 'enter username (login)'
$objUser = New-Object System.Security.Principal.NTAccount($username)
$userSID = $objUser.Translate([System.Security.Principal.SecurityIdentifier])
$SIDandPath = Join-Path $userSID "Control Panel\Desktop"
cp d:\pic1.jpg \\$hostname\c$
$BaseKey = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey( 'Users' , $hostname )
$SubKey = $BaseKey.OpenSubKey($SIDandPath,$true)
$SubKey.SetValue("Wallpaper","d:\pic1.jpg")
我仍然收到这个错误:
您无法在空值表达式上调用方法。在 C:\ Users \“username”\ Scripty \ change_remote_wallpaper.ps1:32 char:17 + $ SubKey.SetValue&lt;&lt;&lt;&lt; ( “墙纸”, “d:\ pic1.jpg”) + CategoryInfo:InvalidOperation:(SetValue:String)[],RuntimeException + FullyQualifiedErrorId:InvokeMethodOnNull
任何想法可能出错?如果我将$ SubKey的值设置为“1”,那么我会收到:
“方法调用失败,因为 [System.Int32] 不包含 方法名为'SetValue'。“
所以我认为,问题在于“OpenSubKey”
感谢您的帮助!!