我正在尝试在运行Windows 7的远程VM上编辑注册表项值。 我正在使用以下命令来做到这一点:
$RegistryBase = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey('LocalMachine', "WIN-MONKU")
$RegKey= $RegistryBase.OpenSubKey("SOFTWARE\lalaland\node")
$RegistryValue = $RegKey.GetValue("HostAddress")
Write-Host "HostAddress: $RegistryValue"
但是我收到以下错误消息:
Exception calling "OpenRemoteBaseKey" with "2" argument(s): "Attempted to perform an unauthorized operation."
At D:\workspace\Scripts\Update.ps1:35 char:1
+ $RegistryBase = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey('Loc ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : UnauthorizedAccessException
You cannot call a method on a null-valued expression.
At D:\workspace\Scripts\Update.ps1:36 char:1
+ $RegKey= $RegistryBase.OpenSubKey("SOFTWARE\lalaland\node")
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) [], RuntimeException
+ FullyQualifiedErrorId : InvokeMethodOnNull
You cannot call a method on a null-valued expression.
At D:\workspace\Scripts\Update.ps1:37 char:1
+ $RegistryValue = $RegKey.GetValue("HostAddress")
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) [], RuntimeException
+ FullyQualifiedErrorId : InvokeMethodOnNull
在我看来,这似乎是授权问题。我不确定应该在哪里提供凭据。
有什么想法吗?
答案 0 :(得分:0)
您尝试将其包装到函数中,并使用具有参数create table archiv11(
id integer primary key,
fileName varchar2(50),
fileContent blob,
locationID integer,
CONSTRAINT archivFK FOREIGN KEY(locationID) REFERENCES d5a11.fileLocation(loc_ID)
);
的{{1}}进行调用:
router: service(),
myRouteName: computed('router.currentRouteName', function () {
return this.get('router.currentRouteName') + 'some modification';
}
让我知道您是否仍然遇到身份验证错误
答案 1 :(得分:0)
你说...
'无法在远程计算机上调用Powershell。我要访问 从我的台式机登录。”
但是,您的帖子标题是...
“使用Powershell在 远程 计算机上编辑注册表项”。
因此,在本地PC上,已启用Hyper-V,并且有Win7 guest虚拟机,因此,这是远程主机。假设您没有使用域部署,则需要使用PC和VM之间的工作组启用PSRemoting。
PowerShell remoting between two workgroup machines
# configure the machine to allow access.
Enable-PSRemoting –force
如果计算机上的一块网卡的网络连接类型设置为“公共”,则在防火墙设置中不会打开所需的端口。如果您不想更改网络连接类型,则必须手动配置防火墙以允许流量通过。如果计划使用特定端口进行连接,请确保正确设置防火墙规则。如果您仅使用默认端口,请参阅最近的博客文章以找出要打开的端口。
# configure the client machine.
Start-Service WinRM
Set-ItemProperty –Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System –Name LocalAccountTokenFilterPolicy –Value 1 –Type DWord
# running on Windows XP
Set-ItemProperty –Path HKLM:\System\CurrentControlSet\Control\Lsa –Name ForceGuest –Value 0
将服务器计算机的名称添加到WinRM配置中的TrustedHosts设置中, 这使您的客户端计算机可以使用身份验证连接到服务器计算机 无法验证服务器身份的机制(如Kerberos一样):
Set-Item WSMan:\localhost\Client\TrustedHosts –Value <ServerMachineName> -Force
# If there is an existing list of servers
Set-Item WSMan:\localhost\Client\TrustedHosts –Value <ServerMachineName> -Force -Concatenate
如果要使用服务器计算机的IP地址而不是其名称,则在连接时必须指定显式凭据。
警告:通过将服务器添加到TrustedHosts列表,您可以将凭据信息发送到服务器,而无需验证其身份。仅当您知道从客户端计算机到服务器计算机的网络路径安全时,才将服务器添加到此列表中。
# check if the WinRM service is running:
Get-Service WinRM
Test-WSMan –Auth default
winrm enumerate winrm/config/listener
# check the remoting configuration
Get-PSSessionConfiguration
New-PSSession
# check if the local account token filter policy is enabled
Get-ItemProperty –Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System –Name LocalAccountTokenFilterPolicy*
# check if the network access policy
Get-ItemProperty –Path HKLM:\System\CurrentControlSet\Control\Lsa –Name ForceGuest*