Powershell ';重命名项';使用新名称制作副本
正在尝试创建脚本以备份特定文件夹,然后在HKLM…\ProfileList下重命名目标用户的GUID键,但“重命名项”命令会复制该键,并创建具有附加名称的新键(尽管具有完全访问权限) 尝试使用-force,尝试使用move item而不是rename,但结果完全相同,新的键与原始键相同,但附加了一个名称Powershell ';重命名项';使用新名称制作副本,powershell,rename-item-cmdlet,Powershell,Rename Item Cmdlet,正在尝试创建脚本以备份特定文件夹,然后在HKLM…\ProfileList下重命名目标用户的GUID键,但“重命名项”命令会复制该键,并创建具有附加名称的新键(尽管具有完全访问权限) 尝试使用-force,尝试使用move item而不是rename,但结果完全相同,新的键与原始键相同,但附加了一个名称 if((测试路径$FULLPATH)){ 重命名项$FULLPATH-NewName“$SSID.bak”-Force 如果($?){ 写入主机“$USERNAME已在注册表中成功重命名” }
if((测试路径$FULLPATH)){
重命名项$FULLPATH-NewName“$SSID.bak”-Force
如果($?){
写入主机“$USERNAME已在注册表中成功重命名”
}
}
预期结果是仅重命名注册表中的GUID项。
实际结果是一个重复的密钥,新的副本具有正确的附加名称
重命名项:指定路径处的注册表项不存在。
第9行字符:5
+重命名项$FULLPATH-NewName“$SSID.bak”-Force
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+CategoryInfo:InvalidArgument:(HKEY_LOCAL_MACH…\folderredirect:String)[重命名项],ArgumentException
+FullyQualifiedErrorId:System.ArgumentException,Microsoft.PowerShell.Commands.RenameItemCommand
重命名项:对象引用未设置为对象的实例。
第9行字符:5
+重命名项$FULLPATH-NewName“$SSID.bak”-Force
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+CategoryInfo:NotSpecified:(:)[Rename Item],NullReferenceException
+FullyQualifiedErrorId:System.NullReferenceException,Microsoft.PowerShell.Commands.RenameItemCommand
密钥确实存在,我可以再次运行相同的命令作为证明(由于测试路径)
详细输出不确认其复制
VERBOSE: Performing the operation "Copy Key" on target "the key in question"
它对我有用。你的变量是这样设置的吗
$SSID = 'S-1-5-21-1212123708-1212126490-1212120831-1001'
$FULLPATH = 'HKLM:\Software\Microsoft\Windows NT\CurrentVersion\ProfileList\S-1-5-21-1212123708-1212126490-1212120831-1001'
rename-item $fullpath -newname "$SSID.bak"
它对我有用。你的变量是这样设置的吗
$SSID = 'S-1-5-21-1212123708-1212126490-1212120831-1001'
$FULLPATH = 'HKLM:\Software\Microsoft\Windows NT\CurrentVersion\ProfileList\S-1-5-21-1212123708-1212126490-1212120831-1001'
rename-item $fullpath -newname "$SSID.bak"
我无法使用带有完整路径且未使用变量的重命名项重命名键。但是,通过将重命名项替换为解决了此问题
#重命名注册表配置文件
if((测试路径$FULLPATH)){
注册副本“HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\$SSID”“HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\$SSID-$(获取日期-f yyy MM DD)”/s/f
如果(($?-eq“True”)){
reg删除“HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\$SSID”/f
}
如果(($?-eq“True”)){
写入主机“$USERNAME已在注册表中成功重命名”
}
必须在reg copy/delete命令中使用一半的完整路径,因为语法不同(没有冒号)。这起作用了我无法使用带有完整路径的重命名项重命名键,也无法使用变量。但是,通过将重命名项替换为
#重命名注册表配置文件
if((测试路径$FULLPATH)){
注册副本“HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\$SSID”“HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\$SSID-$(获取日期-f yyy MM DD)”/s/f
如果(($?-eq“True”)){
reg删除“HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\$SSID”/f
}
如果(($?-eq“True”)){
写入主机“$USERNAME已在注册表中成功重命名”
}
由于语法不同(没有冒号),不得不在reg copy/delete命令中使用一半的完整路径。这起作用了IMO您提供的小代码片段/详细信息不足以给出任何提示。可能是您需要
重命名ItemProperty
-更多(相关)详细信息帮助我们帮助您。它总是值得努力的。在我看来,您提供的小代码片段/详细信息不足以给出任何提示。可能是您需要重命名ItemProperty
-更多(相关)详细信息帮助我们帮助您。它总是值得努力的。是的,有点-$USERNAME=read host“Enter USERNAME”$SID=Get-WmiObject Win32_UserAccount-Filter“Name=”$USERNAME'”$SSID=$SID.SID$REGPATH=“HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList”$FULLPATH=“$REGPATH\$SSID”
@user3415995错误消息表明情况并非如此。$REGPATH
应以HKLM:
或Registry::HKEY_LOCAL_MACHINE
开头(可选路径以提供程序名称开头,后跟两个冒号)您可能会把所有这些都放在问题中。除非出现问题,否则它似乎应该可以工作。是的,有点像-$USERNAME=read host“Enter USERNAME”$SID=Get WmiObject Win32\u UserAccount-Filter“Name='$USERNAME'”$SSID=$SID.SID$REGPATH=“HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList”$FULLPATH=“$REGPATH\$SSID”
@user3415995错误消息表明情况并非如此。$REGPATH
应以HKLM:
或Registry::HKEY_LOCAL_MACHINE
开头(可选路径以提供程序名称开头,后跟两个冒号)你可以把所有这些都放在问题里。除非出了什么问题,否则它似乎应该会起作用。