【发布时间】:2015-07-31 15:46:54
【问题描述】:
当我运行我的代码时,我从 powershell 收到一个转换错误。对于OpenRemoteBasekey,我得到一个“无法转换参数“0”,其值为:“尝试的任何用户的 sid”。任何人都可以查看我的代码,看看我哪里出错了吗?
该脚本应该通过查看他们的注册表项为我提供域中特定用户的打印机列表。我必须将他们的用户名转换为他们的 SID 才能正确映射他们的注册表。
echo "What is the User name?"
$user = [Console]::ReadLine()
#Convert Given username into an SID variable
$sid = ([wmi]"win32_userAccount.Domain='mydomain',Name='$user'").sid
echo "What is it's ip address?"
#This can be an ip address or a host name
$ipuser = [Console]::ReadLine()
Write-Host "Check 1"
#Get Local printers
$Printers = @(Get-WmiObject win32_printer -computername $ipuser | Select Name)
#Get Network Printers
$Reg = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey( $sid, $ipuser)
$RegKey = $Reg.OpenSubkey('Printers\Settings')
$Printers += @($RegKey.GetValueNames())
#Output List of Printer
Write-Output $Printers |
ft -Property @{Name="Printer Name"; Expression={$_.Name}} -AutoSize
#Get Default Printer
$Reg = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey($sid, $ipuser)
$RegKey= $Reg.OpenSubKey('Software\Microsoft\Windows NT\CurrentVersion\Windows')
$DefaultPrinter = $RegKey.GetValue("Device")
#Output the Default Printer
Write-Output $DefaultPrinter |
ConvertFrom-Csv -Header Name, Provider, Order |
Select Name |
ft -Property @{Name="Default Printer Name";Expression={$_.Name}} -AutoSize
【问题讨论】:
-
你在哪里找到这个脚本?
标签: powershell remote-registry