none
紧急求助!!!! 在俄文的操作系统中执行命令:net user администратор 123456# 报语法错误。 RRS feed

  • 问题

  • 问题详细描述:

    命令:net user администратор 123456#

    • 这个是修改俄文操作系统中administrator的密码,администратор是俄文administrator,我在cmd窗口里面输入这条命令,报语法错误在客户端的俄文操作系统中执行的命令,客户端操作系统是:windows7 俄文操作系统(32位),请问这个问题有什么解决方法?
    • 服务器端远程执行winrs -r:192.154.210.106 -u:vdesktopr3\huangli01 -p:Huawei123 -t:1200 net user Администратор  123456#  命令,也是报语法错误。服务器的操作系统是:window 2008R2,英文操作系统(64位)。


    • 但是在客户端执行命令: net localgroup Администраторы vdesktopr3\huangli02 /delete ,删除Администраторыadministrators)组中的vdesktopr3\huangli02 账号是可以执行成功的。

    • 在服务器端执行命令: winrs -r:192.154.210.106 -u:vdesktopr3\huangli01 -p:Huawei123 -t:1200 net localgroup Администраторы vdesktopr3\huangli02 /delete 删除Администраторыadministrators)组中的vdesktopr3\huangli02 账号也是可以执行成功的。


      所以请问一下,为什么修改администраторadministrator)的密码时,net user 命令就有问题?可以用什么方法解决?谢谢。

    2013年2月28日 8:11

答案

  • 最後你可以嘗試一下將俄文名稱用雙引號括起來, 看有沒有問題.

    -这个我已近尝试过了,还是报语法错误。

    我现在的问题实际是net user这个命令怎么就不认识администратор 这个名字,但是可以认识Администраторы ,不是纠结怎么修改密码。

    因为我们项目中禁用了powershell的交互端口号,只能通过命令提示符来进行远程操作。


    winrs 不是 WinRM 遠程管理框架的一部分嗎? 既然允許 winrs 但不允許 powershell 遠程管理我覺得很奇怪.

    另外我認為你應該沒有去看那篇 MSDN 文章, 如果看了的話, 應該就會清楚實現遠程執行的是 .NET Framework 類實例, 而非 PowerShell.

    因為是直接調用類, 那麼就表明完全可以用 C# 語言編寫一個簡單的 GUI\CLI 程序來實現修改特定用戶密碼的功能. 當然還可以考慮通過 VBS 調用 WMI 來修改. 簡而言之, PowerShell 在這裡只是作為一個承載平台, 就如同命令提示符一樣.

    至於 net user 為何執行有錯, 我並不知道. 目前懷疑可能與代碼頁有關, 執行 chcp 看看當前代碼頁是否正確.

    最後有見於這個是與俄羅斯語版 Windows 有關的問題, 並且加上國內用到這個版本的用戶不是很多, 用這個版本又上中文版論壇查閱的用戶又更少, 同時結合到這個問題還與腳本有關, 所以我建議你移步到俄羅斯語 Windows 腳本開發論壇進行咨訊:

    Windows Scripting
    Использование сценариев VBScript, JScript, PowerShell для автоматизации задач администрирования
    http://social.technet.microsoft.com/Forums/ru-ru/scrlangru/threads

    最後需要說明的是無論是中文版論壇還是俄羅斯語版論壇, 都是網友義務提供幫助, 你不能對之抱有多麼大的期待, 況且解決問題也需要提問者積極參與其中積極反饋, 坐著等答案是不現實的.

    如果你希望這個問題得到快速解決, 那麼請聯繫微軟付費技術支持.


    Folding@Home

    2013年3月1日 12:12
  • 當執行

    net user администратор 123456#

    後返回的錯誤信息, 是只包含語法錯誤(синтаксической ошибке?)這句, 還是像其他語種那樣返回包含 net user 命令用法的信息?

    如果是指包含語法錯誤信息, 並且在俄羅斯語版 Windows 的 net user 命令並非這樣進行的本地化, 那麼你需要執行命令

    reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\net.exe" /v Debugger
    reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\net1.exe" /v Debugger

    查看其映像文件是否被重定向. 同時包括對

    wmic datafile where name="c:\\windows\\system32\\net.exe" get version, filesize,manufacturer,creationdate,lastmodified,lastaccessed -value

    wmic datafile where name="c:\\windows\\system32\\net1.exe" get version, filesize,manufacturer,creationdate,lastmodified,lastaccessed -value

    對著兩個文件的版本號, 公司名, 文件大小, 創建時間, 最後修改時間, 最後訪問時間進行檢查,必要是同其他同版本系統的同版本號文件進行比較.

    最為額外檢查, 有建議對這個兩個文件的硬鏈接進行檢查

    fsutil hardlink list c:\windows\system32\net.exe
    fsutil hardlink list c:\windows\system32\net1.exe

    正常情況下, 應該各自只有一個指向 winsxs 目錄下特定子目錄的同名文件, 並且特定子目錄名中的版本號應該與 wmic datafile 檢索獲得一致.


    Folding@Home

    2013年3月3日 2:37

全部回复

  • 關於這個問題, 你可以考慮通過先獲取該用戶 SID, 然後參考如下 PowerShell 代碼修改密碼

    add-type -path 'C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\v3.5\System.DirectoryServices.AccountManagement.dll'
    $ctx = new-object System.DirectoryServices.AccountManagement.PrincipalContext('Machine')
    $sid = 'SID'
    $oldPassword = 'old'
    $newPassword = 'new'
    $up = [System.DirectoryServices.AccountManagement.UserPrincipal]::FindByIdentity($ctx, 'Sid', $sid)
    $up.ChangePassword($oldPassword, $newPassword)
    $up.Dispose()
    $up = $null

    References:
    Get local user by SID
    http://stackoverflow.com/questions/5140468/get-local-user-by-sid

    獲取 SID, 可以通過 wmic 進行獲取

    wmic -node:ComputerNameOrIP useraccount get name, sid

    關於類 PrincipalContext 構造函數的更多說明, 請參考 MSDN 文章:

    PrincipalContext 类
    http://msdn.microsoft.com/zh-cn/library/system.directoryservices.accountmanagement.principalcontext.aspx


    Folding@Home

    2013年2月28日 14:02
  • 上述代碼只是舉例說明, 對於支持遠程修改密碼的功能, 請自行閱讀 MSDN 文章後, 修改 PowerShell 代碼.

    Folding@Home

    2013年2月28日 14:05
  • 上述代碼測試是在 64 位 Windows 7 進行的, 所以請依據實際情況更改 Program Files (x86) 路徑名稱.

    隨帶說一下, 如果是域環境, 那麼修改起來就簡單多了.

    $sid = "SID"
    $usr = [adsi]"LDAP://<SID=$sid>"
    $usr.Invoke('SetPassword', 'Password')

    Retrieve user details from Active Directory using SID
    http://serverfault.com/questions/120411/retrieve-user-details-from-active-directory-using-sid


    Folding@Home

    2013年2月28日 14:39
  • 另外你可以考慮將修改密碼的命令寫入到批處理中, 密碼用 %1 傳入.

    然後遠程調用該批處理, 看能否成功修改.


    Folding@Home

    2013年2月28日 14:48
  • 难道用net user 命令就实现不了? net user администратор 123456#  为什么会出错?

    因为我们只能用dos命令,不能powershell。所以请问下用net user有没有解决之道?

    2013年3月1日 1:17
  • 首先需要說明, 命令提示符是命令提示符, DOS 是 DOS, 不能將兩者混為一談.

    那段代碼雖然是 PowerShell 的, 但是其實是直接調用 .NET Framework 類庫, 所以完全可以用 C# 實現.
    此外從 MSDN 描述看, 相關類是可以支持遠程執行, 不一定要在本機執行.

    PowerShell 默認是在 Windows 7 和 Windows Server 2008 R2 啟用的, 我不知道出於什麼原因非得用 net user? 而且 net user 修改密碼一般是通過鍵盤交互方式進行.  直接以明文提供, 一來不是很安全, 二來直接用明文的話, 某些字符是難以作為密碼字符被系統接受.

    提出這個解決方法, 是因為我沒有使用過俄文版系統, 所以不清楚這個俄文名稱是系統的本地化, 還是後來的重命名.
    只能猜測問題可能出在系統代碼頁上, 同時從你的需求看, 你希望儘速修改該用戶密碼, 那麼就考慮通過其他方式先繞過以指定用戶名方式來修改密碼. 因為每個用戶都對應一個唯一的 SID, 那麼應該有方法可以直接指定 SID 來修改指定用戶密碼, 經過查閱資料和測試證明此方法是可行的.

    最後你可以嘗試一下將俄文名稱用雙引號括起來, 看有沒有問題.
    另外 Administrator 這個帳戶除了默認不應用 UAC 以外, 並無什麼特殊權限, 所以可以處於考慮直接使用處於 UAC 保護下的管理員帳戶.


    Folding@Home


    • 已编辑 repl 2013年3月1日 5:41
    2013年3月1日 5:40
  • 此外你還可以考慮通過 PsPasswd 實用工具來修改密碼

    PsPasswd v1.23
    http://technet.microsoft.com/en-us/sysinternals/bb897543.aspx

    修改前, 務必仔細閱讀 PsPasswd -? 的幫助信息.


    Folding@Home

    2013年3月1日 5:56
  • 最後你可以嘗試一下將俄文名稱用雙引號括起來, 看有沒有問題.

    -这个我已近尝试过了,还是报语法错误。

    我现在的问题实际是net user这个命令怎么就不认识администратор 这个名字,但是可以认识Администраторы ,不是纠结怎么修改密码。

    因为我们项目中禁用了powershell的交互端口号,只能通过命令提示符来进行远程操作。

    2013年3月1日 8:14
  • 最後你可以嘗試一下將俄文名稱用雙引號括起來, 看有沒有問題.

    -这个我已近尝试过了,还是报语法错误。

    我现在的问题实际是net user这个命令怎么就不认识администратор 这个名字,但是可以认识Администраторы ,不是纠结怎么修改密码。

    因为我们项目中禁用了powershell的交互端口号,只能通过命令提示符来进行远程操作。


    winrs 不是 WinRM 遠程管理框架的一部分嗎? 既然允許 winrs 但不允許 powershell 遠程管理我覺得很奇怪.

    另外我認為你應該沒有去看那篇 MSDN 文章, 如果看了的話, 應該就會清楚實現遠程執行的是 .NET Framework 類實例, 而非 PowerShell.

    因為是直接調用類, 那麼就表明完全可以用 C# 語言編寫一個簡單的 GUI\CLI 程序來實現修改特定用戶密碼的功能. 當然還可以考慮通過 VBS 調用 WMI 來修改. 簡而言之, PowerShell 在這裡只是作為一個承載平台, 就如同命令提示符一樣.

    至於 net user 為何執行有錯, 我並不知道. 目前懷疑可能與代碼頁有關, 執行 chcp 看看當前代碼頁是否正確.

    最後有見於這個是與俄羅斯語版 Windows 有關的問題, 並且加上國內用到這個版本的用戶不是很多, 用這個版本又上中文版論壇查閱的用戶又更少, 同時結合到這個問題還與腳本有關, 所以我建議你移步到俄羅斯語 Windows 腳本開發論壇進行咨訊:

    Windows Scripting
    Использование сценариев VBScript, JScript, PowerShell для автоматизации задач администрирования
    http://social.technet.microsoft.com/Forums/ru-ru/scrlangru/threads

    最後需要說明的是無論是中文版論壇還是俄羅斯語版論壇, 都是網友義務提供幫助, 你不能對之抱有多麼大的期待, 況且解決問題也需要提問者積極參與其中積極反饋, 坐著等答案是不現實的.

    如果你希望這個問題得到快速解決, 那麼請聯繫微軟付費技術支持.


    Folding@Home

    2013年3月1日 12:12
  • 修改一下命令提示符的快捷方式属性,设置一下命令提示符的默认文字编码为俄文。然后先用这个快捷方式启动命令提示符窗口,再运行命令试试。
     
    --
    Alexis Zhang
     
    http://mvp.support.microsoft.com/profile/jie
    http://blogs.itecn.net/blogs/alexis
     
    推荐以 NNTP Bridge 桥接新闻组方式访问论坛以获取最佳用户体验。
     
    本帖是回复帖,原帖作者是楼上的 "huangli_123456"
     
    所以请问一下,为什么修改администратор(administrator)?拿苈胧保琻et user 命令就有问题?可以用什么方法解决?谢谢。
     
     
    2013年3月1日 22:25
  • 當執行

    net user администратор 123456#

    後返回的錯誤信息, 是只包含語法錯誤(синтаксической ошибке?)這句, 還是像其他語種那樣返回包含 net user 命令用法的信息?

    如果是指包含語法錯誤信息, 並且在俄羅斯語版 Windows 的 net user 命令並非這樣進行的本地化, 那麼你需要執行命令

    reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\net.exe" /v Debugger
    reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\net1.exe" /v Debugger

    查看其映像文件是否被重定向. 同時包括對

    wmic datafile where name="c:\\windows\\system32\\net.exe" get version, filesize,manufacturer,creationdate,lastmodified,lastaccessed -value

    wmic datafile where name="c:\\windows\\system32\\net1.exe" get version, filesize,manufacturer,creationdate,lastmodified,lastaccessed -value

    對著兩個文件的版本號, 公司名, 文件大小, 創建時間, 最後修改時間, 最後訪問時間進行檢查,必要是同其他同版本系統的同版本號文件進行比較.

    最為額外檢查, 有建議對這個兩個文件的硬鏈接進行檢查

    fsutil hardlink list c:\windows\system32\net.exe
    fsutil hardlink list c:\windows\system32\net1.exe

    正常情況下, 應該各自只有一個指向 winsxs 目錄下特定子目錄的同名文件, 並且特定子目錄名中的版本號應該與 wmic datafile 檢索獲得一致.


    Folding@Home

    2013年3月3日 2:37