找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 23598|回复: 3

[问题求助] 【已解决】如何使用powershell实现一键改名加域?

[复制链接]
发表于 2016-8-22 12:36:51 | 显示全部楼层 |阅读模式
本帖最后由 kingshui 于 2016-8-22 16:36 编辑

RT,
想实现一键改名加域的操作,但是用powershell ps1的话运行方式有点接受不了,能否用bat的方式来进行呢?

  1. $domain = "chenker"
  2. $password = "asd=1234" | ConvertTo-SecureString -asPlainText -Force
  3. $username = "chenker\sszxw"
  4. $credential = New-Object System.Management.Automation.PSCredential($username,$password)
  5. Add-Computer -DomainName $domain -computername $env:hostname -NewName $env:newhostname -Credential $credential
  6. Set-ExecutionPolicy -Scope LocalMachine -ExecutionPolicy Restricted -Force
复制代码
其实是想把上面的代码写成一行,但是不懂怎么用。。。

类似powershell -command ******这样。

所以想向各位有经验的朋友请教。谢谢



下面这个方式需要在改名后重启才能用新计算机名加域,不是我想要的。
  1. @echo off
  2. REM _______________________________________________________________________________
  3. >nul 2>&1 "%systemroot%\system32\cacls.exe" "%systemroot%\system32\config\system"
  4. if '%errorlevel%' NEQ '0' (
  5. goto UACPrompt
  6. ) else (goto gotAdmin)
  7. :UACPrompt
  8. echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
  9. echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%\getadmin.vbs"
  10. "%temp%\getadmin.vbs"
  11. exit /B
  12. :gotAdmin
  13. if exist "%temp%\getadmin.vbs" (del "%temp%\getadmin.vbs")
  14. pushd "%CD%"
  15. cd /d "%~dp0"
  16. REM _______________________________________________________________________________
  17. set /p pcname=Please enter new pcname:
  18. WMIC computersystem where nmae="%computername%" call rename name=%pcname%
  19. ping -n 5 127.0.1 >nul
  20. WMIC computersystem where name="%computername%" call joindomainorworkgroup accountOU="OU=gsr;dc=chenker" fjoinoptions=3 name="chenker" username="chenker\sszxw" password="asd=1234"|find "2224" && WMIC computersystem where name="%computername%" call joindomainorworkgroup accountOU="OU=gsr;dc=chenker" fjoinoptions=1 name="chenker" username="chenker\sszxw“ password="asd=1234"
  21. pause
复制代码

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2016-8-22 15:03:35 | 显示全部楼层
test.bat
  1. @echo off
  2. for /f "delims=:" %%i in ('findstr /n "^:JoinDomain$" "%~f0"') do (
  3.     more +%%i "%~f0" > "%temp%\new.ps1"
  4. )
  5. powershell -f "%temp%\new.ps1"
  6. goto :eof

  7. :JoinDomain
  8. $domain = "chenker"
  9. $password = "asd=1234" | ConvertTo-SecureString -asPlainText -Force
  10. $username = "chenker\sszxw"
  11. $credential = New-Object System.Management.Automation.PSCredential($username,$password)
  12. Add-Computer -DomainName $domain -computername $env:hostname -NewName $env:newhostname -Credential $credential
  13. Set-ExecutionPolicy -Scope LocalMachine -ExecutionPolicy Restricted -Force
复制代码

评分

参与人数 1技术 +1 收起 理由
Batcher + 1 乐于助人

查看全部评分

发表于 2016-8-22 15:50:07 | 显示全部楼层
 楼主| 发表于 2016-8-22 16:36:07 | 显示全部楼层
多谢楼上两位,采用了GNU的方式,

@pcl_test,发贴前有search过,用过混合编程的方法,但是这个方法不适合有交互的PS脚本使用,比如我需要输入东西的时候就用不了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 02:31 , Processed in 0.010610 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表