もぐうさノート

惰性で生きてます。

最近作ったPowershellスクリプト

作ったといってもコピペ継ぎ接ぎだけど。

Powershellおもしろいです。

 

・フォルダ内のデータを全部消す

Remove-Item -Recurse <フォルダのフルパス>*

 

・テキストファイル読み込み時に1行目をスキップする

ExcelファイルとかCSVファイルとか読み込ますときに使える。

Get-Content $file | Select-Object -Skip 1

 

・ゴミ箱を空にする

$shell = New-Object -comObject Shell.Application
$i = $shell.NameSpace(10).Items().Count
do{
$item = $shell.NameSpace(10).Items().Item(0)
Remove-Item -Recurse $item.Path
$i = $shell.NameSpace(10).Items().Count
}while($i -gt 0)

 

 

・PC名変更して再起動

$newname = Read-Host "コンピュータ名"
$sysinfo = Get-WmiObject -Class Win32_ComputerSystem
$sysinfo.Rename($newname)
Restart-Computer

 

Windowsドメインに参加して再起動

#上の方の変数定義は不要かも

$JOIN_DOMAIN = 1
$ACCT_CREATE = 2
$ACCT_DELETE = 4
$WIN9X_UPGRADE = 16
$DOMAIN_JOIN_IF_JOINED = 32
$JOIN_UNSECURE = 64
$MACHINE_PASSWORD_PASSED = 128
$DEFERRED_SPN_SET = 256
$INSTALL_INVOCATION = 262144
$strDomain = <ドメインFQDN
$strUser = Read-Host "ユーザー名"
$Password = Read-Host "パスワード" -AsSecureString
$ptr = [System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($Password)
$strPassword = [System.Runtime.InteropServices.Marshal]::PtrToStringBSTR($ptr)
$ret =
(get-WmiObject Win32_ComputerSystem).JoinDomainOrWorkGroup(
$strDomain, $strPassword, $strDomain + "\" + $strUser,
$null, $JOIN_DOMAIN + $ACCT_CREATE)
if($ret.ReturnValue -eq 0){
shutdown /r /t 0
} else {
$ret
}