Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powershell ';重命名项';使用新名称制作副本_Powershell_Rename Item Cmdlet - Fatal编程技术网

Powershell ';重命名项';使用新名称制作副本

Powershell ';重命名项';使用新名称制作副本,powershell,rename-item-cmdlet,Powershell,Rename Item Cmdlet,正在尝试创建脚本以备份特定文件夹,然后在HKLM…\ProfileList下重命名目标用户的GUID键,但“重命名项”命令会复制该键,并创建具有附加名称的新键(尽管具有完全访问权限) 尝试使用-force,尝试使用move item而不是rename,但结果完全相同,新的键与原始键相同,但附加了一个名称 if((测试路径$FULLPATH)){ 重命名项$FULLPATH-NewName“$SSID.bak”-Force 如果($?){ 写入主机“$USERNAME已在注册表中成功重命名” }

正在尝试创建脚本以备份特定文件夹,然后在HKLM…\ProfileList下重命名目标用户的GUID键,但“重命名项”命令会复制该键,并创建具有附加名称的新键(尽管具有完全访问权限)

尝试使用-force,尝试使用move item而不是rename,但结果完全相同,新的键与原始键相同,但附加了一个名称

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
开头(可选路径以提供程序名称开头,后跟两个冒号)你可以把所有这些都放在问题里。除非出了什么问题,否则它似乎应该会起作用。