忍者ブログ

◆当blogは、Linuxサーバ構築する際の実際の設定手順を個人的メモとして記載しております。LinuC試験の役に立つ情報があるかも…?

LinuC(Linux技術者認定資格)&リナックスサーバ構築設定事例

   
カテゴリー「PowerShell」の記事一覧

【PowerShell】関数オブジェクト

REM ▼▲▼▲▼▲▼▲▼▲▼▲▼
REM ▼スクリプトファイル名  
REM ▲『WinMerge_Excel.bat』
REM ▲▼▲▼▲▼▲▼▲▼▲▼▲
 
@echo off
REM **************************
REM # conhost切替
REM **************************
if not "%1"=="am_admin" (
    start conhost "%~f0" am_admin & exit /b
)
 
REM **************************
REM # 画面サイズ設定
REM # カラー設定
REM # 文字コード設定
REM **************************
mode con: cols=120 lines=16
color 0a
chcp 932
 
timeout 1
 
REM **************************
REM # PowerShell実行
REM **************************
powershell -ExecutionPolicy RemoteSigned -File "%CD%\WinMerge_Excel.ps1"
 
timeout 5
 
REM **************************
REM # バッチ終了処理
REM **************************
color 17
cls
 
echo .
echo " ================= "
echo " ====== END ====== "
echo " ================= "
echo .
 
timeout 3
 
# ▼▲▼▲▼▲▼▲▼▲▼▲▼
# ▼スクリプトファイル名  
# ▲『WinMerge_Excel.ps1』
# ▲▼▲▼▲▼▲▼▲▼▲▼▲
 
#******************************
# ■ .NET クラス読込
#-----------------------------
Add-Type -AssemblyName System.Windows.Forms
 
#******************************
# ■ 定数設定
#-----------------------------
#【年月日-時分秒】
$DayTime = Get-Date -Format "yyyyMMdd-HHmmss"
 
#-----------------------------
#【WinMerge格納パス】
# ※ 環境に合わせて以下のパスを設定
$winMerge = "C:\Program Files\WinMerge\WinMergeU.exe"
 
#-----------------------------
#【ポップアップメッセージ】
$P_MSG_1 = "★★★★★ 【WinMerge】比較元(左側)ファイルを選択 ★★★★★"
$P_MSG_2 = "★★★★★ 【WinMerge】比較先(右側)ファイルを選択 ★★★★★"
$P_MSG_3 = "★★★★★ 【WinMerge】出力先を確認ください ★★★★★"
 
#-----------------------------
#【出力メッセージ】
$W_MSG_0 = " ================= "
$W_MSG_1 = " ※※※ 【PowerShell実行 ⇒ WinMerge】 ※※※ "
$W_MSG_2 = " ※※※ 比較元と比較先のファイルを確認ください ※※※ "
$W_MSG_3 = " ====== END ====== "
 
#-----------------------------
#【msgbox オブジェクト生成】
$msgbox = New-Object -ComObject Wscript.Shell
 
#-----------------------------
#【fileDialog オブジェクト生成】
$FileDialog = New-Object System.Windows.Forms.OpenFileDialog
$fileDialog.Title = "【★★★★★ 対象ファイルを選択してください ★★★★★】"
$FileDialog.Filter = "すべてのファイル (*.*)|*.*"
$fileDialog.ValidateNames = $false
$fileDialog.CheckFileExists = $false
$fileDialog.CheckPathExists = $true
 
#******************************
# ■ 関数設定
#-----------------------------
#【ダイアログからパス取得】
function Select_File {
  if ($FileDialog.ShowDialog() -eq [System.Windows.Forms.DialogResult]::OK) {
    $filePath = $FileDialog.FileName
    #-----------------------------
    #【アクセスチェック】
    if (Test-Path -LiteralPath $filePath) {
      return $filePath
    } else {
        Write-Error "【*** Path ERROR ***】 : $_"
        exit
    }
  } else {
    Write-Host "選択無し(キャンセル)" -ForegroundColor Yellow
    exit
  }
}
 
#******************************
# ■ 処理開始メッセージ表示
#-----------------------------
Write-Host " "
Write-Host "$W_MSG_1"
Write-Host " "
 
Start-Sleep 1
 
#******************************
# ■ 比較元(左側)を選択
#-----------------------------
$msgbox.popup("$P_MSG_1")
$PATH_L = Select_File
 
Write-Host "【WinMerge】比較元(左側): $PATH_L"
 
Start-Sleep 1
 
#******************************
# ■ 比較先(右側)を選択
#******************************
$msgbox.popup("$P_MSG_2")
$PATH_R = Select_File
 
Write-Host "【WinMerge】比較先(右側): $PATH_R"
 
#******************************
# ■ 確認メッセージ表示
#-----------------------------
Write-Host " "
Write-Host "$W_MSG_2"
Write-Host " "
pause
 
#******************************
# ■ 出力先パス設定
#-----------------------------
# ## $OUTPUT_Path = [Environment]::GetFolderPath("Desktop")
# ## $OUTPUT_Path = (Get-Location).Path
$OUTPUT_Path = $PSScriptRoot
#-----------------------------
$msgbox.popup("$P_MSG_3")
Write-Host "**************************************"
Write-Host "【WinMerge】フォルダ名  : $OUTPUT_Path"
 
#******************************
# ■ HTMLパス取得(生成)
#-----------------------------
$HTML_File = "$OUTPUT_Path\Diff_HTML_$DayTime.html"
Get-ChildItem | Select-Object Name, Length | ConvertTo-Html > $HTML_File
#-----------------------------
Write-Host "【WinMerge】HTML名  : $HTML_File"
 
#******************************
# ■ WinMerge 比較実行
#-----------------------------
& $winMerge /r /noninteractive /or "$HTML_File" "$PATH_L" "$PATH_R"
 
#******************************
# ■ WinMerge比較結果を保存する
#-----------------------------
#【EXCELファイル名の設定】
$EXCEL_File = "$OUTPUT_Path\Diff_Excel_$DayTime.xlsx"
Write-Host "【WinMerge】エクセル名  : $EXCEL_File"
Write-Host "**************************************"
Write-Host " "
pause
 
#-----------------------------
#【EXCEL オブジェクト生成】
$excel = New-Object -ComObject Excel.Application
$excel.Visible = $false
$excel.DisplayAlerts = $false
 
#-----------------------------
#【EXCEL ファイル保存処理】
try {
  $workbook = $excel.Workbooks.Open($HTML_File)
  $fileFormat = 51
  $workbook.SaveAs($EXCEL_File,$fileFormat)
  Write-Host " "
  Write-Host "【*** Excel保存完了 ***】 $EXCEL_File" -ForegroundColor Green
  Write-Host " "
}
catch {
  Write-Host " "
  Write-Error "【*** EXCEL ERROR ***】 : $_"
  Write-Host " "
}
 
#******************************
# ■ オブジェクト解放処理
#-----------------------------
finally {
  #-----------------------------
  #【EXCEL オブジェクト解放】
  if ($workbook) { 
    $workbook.Close($false)
  }
  $excel.Quit()
  [System.Runtime.Interopservices.Marshal]::ReleaseComObject($excel) | Out-Null
  Remove-Variable excel
 
  #-----------------------------
  #【fileDialog オブジェクト解放】
  $fileDialog.Dispose()
 
  #-----------------------------
  #【msgbox オブジェクト解放】
  $msgbox = $null
  if ($null -ne $msgbox) {
    [System.Runtime.InteropServices.Marshal]::ReleaseComObject($msgbox) | Out-Null
    #-----------------------------
    #【ガベージコレクション強制】
    [System.GC]::Collect()
    [System.GC]::WaitForPendingFinalizers()
  }
}
 
#******************************
# ■ 処理終了メッセージ表示
#-----------------------------
Write-Host " "
Write-Host "$W_MSG_0"
Write-Host "$W_MSG_3"
Write-Host "$W_MSG_0"
Write-Host " "
 
Start-Sleep 2
PR

【PowerShell】WinMarge

■■■■■■■■■■■■■■■
■『WinMerge_Excel.bat』で以下を保存する
■■■■■■■■■■■■■■■
@echo off
REM **************************
REM # conhost切替
REM **************************
if not "%1"=="am_admin" (
    start conhost "%~f0" am_admin & exit /b
)
 
REM **************************
REM # 画面サイズ設定
REM # カラー設定
REM # 文字コード設定
REM **************************
mode con: cols=120 lines=16
color 0a
chcp 932
 
timeout 1
echo "====== START ======"
 
REM **************************
REM # PowerShell実行
REM **************************
powershell -ExecutionPolicy RemoteSigned -File "%USERPROFILE%\Desktop\PowerShell_WinMerge\WinMerge_Excel.ps1"
 
color 17
 
echo "====== E N D ======"
 
timeout 5
■■■■■■■■■■■■■■■
■『WinMerge_Excel.ps1』で以下を保存する
■■■■■■■■■■■■■■■
Write-Host " "
Write-Host " ※※※ 【 PowerShellで、WinMergeの比較を実行 】 ※※※ "
Write-Host " ※※※ 【 比較結果をExcelファイルに保存する  】 ※※※ "
Write-Host " "
Start-Sleep 2
 
#******************************
# ■ .NET クラス読込
#-----------------------------
Add-Type -AssemblyName System.Windows.Forms
 
#******************************
# ■ 定数設定
#-----------------------------
#【ダイアログ】
$fileDialog = New-Object System.Windows.Forms.OpenFileDialog
$fileDialog.Title = "【★★★★★ 対象ファイルを選択してください ★★★★★】"
 
#-----------------------------
#【メッセージボックス】
$msgbox = new-object -comobject wscript.shell
 
#-----------------------------
#【年月日-時分秒】
$DayTime = Get-Date -Format "yyyyMMdd-HHmmss"
 
#-----------------------------
#【WinMerge格納パス】
$winMerge = "C:\Program Files\WinMerge\WinMergeU.exe"
 
#******************************
# ■ 比較元(左側)を選択
#-----------------------------
$msgbox.popup("★★★★★ 【WinMerge】比較元(左側)ファイルを選択 ★★★★★")
#-----------------------------
#【左側(比較元)パス取得】
#-----------------------------
if ($fileDialog.ShowDialog() -eq [System.Windows.Forms.DialogResult]::OK) {
  $selectedFile = $fileDialog.FileName
  Write-Host "【WinMerge】比較元(左側): $selectedFile"
} else {
  Write-Host "選択無し(キャンセル)"
}
 
#-----------------------------
#【左側(比較元)を変数に格納】
$PATH_L = "$selectedFile"
#-----------------------------
 
#******************************
# ■ 比較先(右側)を選択
#******************************
$msgbox.popup("★★★★★ 【WinMerge】比較先(右側)ファイルを選択 ★★★★★")
#-----------------------------
#【右側(比較先)パス取得】
#-----------------------------
if ($fileDialog.ShowDialog() -eq [System.Windows.Forms.DialogResult]::OK) {
  $selectedFile = $fileDialog.FileName
  Write-Host "【WinMerge】比較先(右側): $selectedFile"
} else {
  Write-Host "選択無し(キャンセル)"
}
 
#-----------------------------
#【右側(比較先)を変数に格納】
$PATH_R = "$selectedFile"
#-----------------------------
 
#******************************
# ■ 確認メッセージ表示
#-----------------------------
Write-Host " "
Write-Host " ※※※ 比較元と比較先のファイルを確認ください ※※※ "
Write-Host " "
pause
 
#******************************
# ■ 出力先パス設定
#-----------------------------
# ## $OUTPUT_Path = [Environment]::GetFolderPath("Desktop")
# ## $OUTPUT_Path = (Get-Location).Path
$OUTPUT_Path = $PSScriptRoot
#-----------------------------
$msgbox.popup("★★★★★ 【WinMerge】出力先を確認ください ★★★★★")
Write-Host "**************************************"
Write-Host "【WinMerge】出力先パス  : $OUTPUT_Path"
 
#******************************
# ■ HTMLパス取得(生成)
#-----------------------------
$HTML_File = "$OUTPUT_Path\File_HTML_$DayTime.html"
Get-ChildItem | Select-Object Name, Length | ConvertTo-Html > $HTML_File
#-----------------------------
Write-Host "【WinMerge】出力HTML名  : $HTML_File"
 
#******************************
# ■ WinMerge 比較実行
#-----------------------------
& $winMerge /r /noninteractive /or $HTML_File $PATH_L $PATH_R
 
  #******************************
  # ■ エクセル表示
  #-----------------------------
  # ## Start-Process "excel.exe" $HTML_File
 
#******************************
# ■ WinMerge比較結果を保存する
#-----------------------------
#【EXCELファイル名の設定】
$EXCEL_File = "$OUTPUT_Path\File_Excel_$DayTime.xlsx"
Write-Host "【WinMerge】出力EXCEL名 : $EXCEL_File"
Write-Host "**************************************"
Write-Host " "
pause
 
#-----------------------------
#【EXCEL オブジェクト生成】
$excel = New-Object -ComObject Excel.Application
$excel.Visible = $false
$excel.DisplayAlerts = $false
 
#-----------------------------
#【EXCEL ファイル保存処理】
try {
  $workbook = $excel.Workbooks.Open($HTML_File)
  $fileFormat = 51
  $workbook.SaveAs($EXCEL_File,$fileFormat)
  Write-Host " "
  Write-Host "【*** Excelファイル保存完了 ***】 $EXCEL_File" -ForegroundColor Green
  Write-Host " "
}
catch {
  Write-Host " "
  Write-Error "【*** ERROR ***】 : $_" -ForegroundColor Red
  Write-Host " "
}
 
#-----------------------------
#【EXCEL オブジェクト解放】
finally {
  if ($workbook) { $workbook.Close($false) }
  $excel.Quit()
  [System.Runtime.Interopservices.Marshal]::ReleaseComObject($excel) | Out-Null
  Remove-Variable excel
}

【PowerShell】ログ取得

#-----------------------------
# ログファイル取得開始
$LogFile = Get-Date -Format "LOG_yyyy_MMdd_HHmmss"
Start-Transcript C:\PS_Logs\$LogFile.log -Append | Out-Null
#-----------------------------
# 強制上書きオプション
Copy-Item -Path C:\Temp999\pstest.txt -Destination C:\Temp999\copy.txt -Force
Copy-Item -Path C:\Temp999\pstest.txt -Destination C:\Temp999\copy.txt -Force -Recurse
Copy-Item -Path C:\Temp999\pstest.txt -Destination C:\Temp999\copy.txt -Force -PassThru
#-----------------------------
# ログファイル取得終了
Stop-Transcript | Out-Null
#-----------------------------
#標準出力とログ出力
$Output_File = "C:\tmp\History.txt"
echo "テスト" | Tee-Object $Output_File -Append
Get-Content $Output_File

【PowerShell】アカウントの情報表示

★ユーザーアカウント表示(ローカル
Get-WmiObject Win32_UserAccount | ? { $_.LocalAccount -eq $true } | Format-table -autosize -wrap

★ユーザーアカウント表示(ドメイン

Get-WmiObject Win32_UserAccount | ? { $_.LocalAccount -eq $false } | Format-table -autosize -wrap

★グループ表示(ローカル

Get-WmiObject Win32_Group | ? { $_.LocalAccount -eq $true }

★グループ表示(ドメイン

Get-WmiObject Win32_Group | ? { $_.LocalAccount -eq $false }

★役割と機能をCSV形式に出力【おまけ】

Get-WindowsFeature | Export-Csv -encoding Default Feature.csv

【PowerShell】バッチから実行

■以下のようにバッチファイルに記述するとバッチからPowerShellが実行出来る
@echo off
PowerShell -command "Write-Output '--- --- --- --- --- --- --- --- --- --- --- --- --- ---'"
PowerShell -command "Write-Output '★★★ 開始 ★★★'"
PowerShell -command "Write-Output '--- --- --- --- --- --- --- --- --- --- --- --- --- ---'"
PowerShell -command "Write-Output ' '"
PowerShell -command "Write-Output '▲▼▲▼▲▼ ホスト名 ▲▼▲▼▲▼'"
PowerShell -command "hostname"
PowerShell -command "Write-Output '--- --- --- --- --- --- --- --- --- --- --- --- --- ---'"
PowerShell -command "Write-Output '▲▼▲▼▲▼ 日時 ▲▼▲▼▲▼'"
PowerShell -command "Get-Date -Format 'yyyy/MM/dd HH:mm'"
PowerShell -command "Write-Output '--- --- --- --- --- --- --- --- --- --- --- --- --- ---'"
PowerShell -command "Write-Output '▲▼▲▼▲▼ パッチ情報(降順) ▲▼▲▼▲▼'"
PowerShell -command "Get-HotFix | Where-Object HotFixID -match "KB" | Sort-Object -Descending InstalledOn"
PowerShell -command "Write-Output '--- --- --- --- --- --- --- --- --- --- --- --- --- ---'"
PowerShell -command "Write-Output '▲▼▲▼▲▼ 最近のOS起動の日時 ▲▼▲▼▲▼'"
PowerShell -command "Get-EventLog System | Where-Object {$_.InstanceId -eq "12" } | Select-Object -First 1"
PowerShell -command "Write-Output '--- --- --- --- --- --- --- --- --- --- --- --- --- ---'"
PowerShell -command "Write-Output '▲▼▲▼▲▼ システムイベント(エラー) ▲▼▲▼▲▼'"
PowerShell -command "Get-EventLog System | Where-Object {$_.EntryType -eq 'Error'} | Select-Object -First 50"
PowerShell -command "Write-Output '--- --- --- --- --- --- --- --- --- --- --- --- --- ---'"
pause
PowerShell -command "Write-Output '▲▼▲▼▲▼ システムイベント(警告) ▲▼▲▼▲▼'"
PowerShell -command "Get-EventLog System | Where-Object {$_.EntryType -eq 'Warning'} | Select-Object -First 50"
PowerShell -command "Write-Output '--- --- --- --- --- --- --- --- --- --- --- --- --- ---'"
pause
rem PowerShell -command "Write-Output '▲▼▲▼▲▼ アプリケーションイベント(エラー) ▲▼▲▼▲▼'"
rem PowerShell -command "Get-EventLog Application | Where-Object {$_.EntryType  -Like 'Error'} | Select-Object -First 30"
rem PowerShell -command "Write-Output '--- --- --- --- --- --- --- --- --- --- --- --- --- ---'"
rem pause
rem PowerShell -command "Write-Output '▲▼▲▼▲▼ アプリケーションイベント(警告) ▲▼▲▼▲▼'"
rem PowerShell -command "Get-EventLog Application | Where-Object {$_.EntryType  -Like 'Warning'} | Select-Object -First 30"
rem PowerShell -command "Write-Output '--- --- --- --- --- --- --- --- --- --- --- --- --- ---'"
rem pause
PowerShell -command "Write-Output ' '"
PowerShell -command "Write-Output '--- --- --- --- --- --- --- --- --- --- --- --- --- ---'"
PowerShell -command "Write-Output '★★★ 終了 ★★★'"
PowerShell -command "Write-Output '--- --- --- --- --- --- --- --- --- --- --- --- --- ---'"
pause

【PowerShell】フォルダ内容一覧表示

以下のようにバッチファイルからPowershellスクリプトを呼んで処理する場合の例
[_PowerShell_実行.bat] ←バッチファイル名
 @echo off
 echo .
 echo *********************************
 echo ★ Powershellスクリプトを実行 ★
 echo *********************************
 echo .
 @echo on
 powershell -ExecutionPolicy RemoteSigned -File .\_PowerShell_001.ps1
 powershell -ExecutionPolicy RemoteSigned -File .\_PowerShell_002.ps1
 @echo off
 echo .
 echo ▲▼▲▼▲▼▲ 実行完了 ▼▲▼▲▼▲▼
 echo .
 pause

[_PowerShell_001.ps1] ←スクリプトファイル名

 # ★カレントフォルダの中身を一覧表示(名前、更新日時)名前順にソート
 # テキストファイルに出力

 Get-ChildItem .\ -File -Recurse | Sort-Object FullName | Out-File -LiteralPath .\_XXX_LIST_01.txt

 Get-ChildItem .\ -Recurse | Sort-Object FullName | Format-Table -Property Attributes, LastWriteTime, Name, Mode, DirectoryName | Out-File -LiteralPath .\_XXX_LIST_02.txt -Encoding Default

 # CSVファイルに出力
 Get-ChildItem .\ -Recurse | Sort-Object FullName | Select-Object Attributes, LastWriteTime, Name, Mode, DirectoryName | Export-Csv -LiteralPath .\_XXX_LIST_File.csv -Encoding Default

 Get-ChildItem .\ -File -Recurse | Sort-Object FullName | Select-Object Name | Where-Object { ! $_.PSIsContainer } | Out-File -LiteralPath .\_XXX_Name_csv_File.csv

 Get-ChildItem .\ -File -Recurse | Sort-Object FullName | Select-Object LastWriteTime | Get-Date -Format "yyyy/M/d" | Out-File -LiteralPath .\_XXX_Date_csv_File.csv

 Get-ChildItem .\ -File -Recurse | Sort-Object FullName | Select-Object LastWriteTime | Get-Date -Format "HH:mm" | Out-File -LiteralPath .\_XXX_TIME_csv_File.csv
 
[_PowerShell_002.ps1] ←スクリプトファイル名
 cat .\_XXX_LIST_01.txt

 $LIST = Get-Content .\_XXX_LIST_01.txt | ForEach-Object { $_ -replace '\b0+\B' }

 $LIST | Out-File .\_XXX_LIST_01_MMDD.txt

 # デフォルトの文字コード表示

 [System.Text.Encoding]::Default

 # ディレクトリのみ抽出
 dir -Directory -Recurse | Select FullName > _XXX_Directory_Path.txt

 # 加工しやすいように出力
 Get-ChildItem .\ -File -Recurse | Sort-Object FullName | Select-Object LastWriteTime, Name, DirectoryName | Where-Object { ! $_.PSIsContainer } | Export-Csv -LiteralPath .\_Export_CSV_.csv -Encoding Default | Format-Table -AutoSize | Out-String -Width 4096

 Get-ChildItem .\ -File -Recurse | Sort-Object FullName | Select-Object LastWriteTime  | Where-Object { ! $_.PSIsContainer } | Export-Csv -LiteralPath .\_YYYYMMDD_hhmm_.txt -Encoding Default | Format-Table -AutoSize | Out-String -Width 4096


【PowerShell】コンソール出力をログに保存

PowerShellの実行結果(標準出力など) をログに保存する方法です。
(Linuxでいうところのscriptコマンド相当)
※このコマンドはISE環境では実行できません。


# ログ取得開始
Start-Transcript <ログファイル名>

# ログ取得終了
Stop-Transcript

【PowerShell】ローカルアカウント作成時に複数グループを設定する

ローカルアカウント作成時に複数グループを設定するサンプル作りました。

ファイル名:A2.ps1
# //変数格納//
  $computer = $Env:ComputerName
  $cdpath = (Get-Location).Path
# //text⇒CSV変換//
  $csv = import-csv -path $cdpath\A2.txt
# //テキスト情報の読込み//
  foreach($strUser in $csv)
  {
# //情報取得//
  $user = $struser.user
  $password = $struser.password
  $description =  $struser.description
  $group1 = $struser.group1
  $group2 = $struser.group2
# //初期化//
  Clear-Host
# //ユーザー作成//
  $ObjOU = [ADSI]"WinNT://$computer"
  $objUser = $objOU.Create("User", $user)
  $objUser.setpassword($password)
  $objUser.put("description",$description)
  $objUser.UserFlags = 0x10000 #パスワードを無期限に設定
  $objUser.SetInfo()
# //グループ設定 (1) //
  $objGroup = [ADSI]"WinNT://$computer/$group1"
  $objGroup.add("WinNT://$computer/$user")
  $objGroup.SetInfo()
# //グループ設定 (2) //
  $objGroup = [ADSI]"WinNT://$computer/$group2"
  $objGroup.add("WinNT://$computer/$user")
  $objGroup.SetInfo()
  }

##################################################
※読み込ませるデータに複数のグループを設定しておく
ファイル名:A2.txt
user,password,description,group1,group2
Test01,Password01,"説明文",administrators,users
Test02,Password01,"説明文",administrators,users
##################################################

【PowerShell】ローカルアカウントの設定変更スクリプト

既存しているローカルアカウントの設定を変更するサンプル作りました。

ファイル名:A1.ps1
# //変数格納//
  $computer = $Env:ComputerName
  $cdpath = (Get-Location).Path
# //text⇒CSV変換//
  $csv = import-csv -path $cdpath\A.txt

# //ファイル情報の読込み//

 foreach($strUser in $csv){
# //情報取得//
 $user = $struser.user
 $password = $struser.password
 $description =  $struser.description
# //初期化//
 Clear-Host
# //説明文とパスワードの設定変更//
 $objUser = [ADSI]"WinNT://$computer/$user"
 $objUser.setpassword($password)
 $objUser.description = $description
 $objUser.SetInfo()
}

【PowerShell】パワーシェルスクリプトの呼び出しBATファイル

BATファイルからパワーシェルスクリプトを実行するサンプル作りました。
※パワーシェルスクリプトをBATから呼び出す為には、
 管理者権限でコマンドプロンプトを実行し、
 実行ポリシーのセキュリティをRemotesignedに変更する等が必要なことに留意する
    (※Windows2012の場合、Remotesignedがデフォルト値の為、変更する必要なし)

ファイル名:A.bat
@echo off
echo 実行ポリシー保存
powershell Get-ExecutionPolicy
for /f "delims=" %%a in ('powershell -Command Get-ExecutionPolicy') do @set backupPolicy=%%a
echo 実行ポリシー変更
powershell Set-ExecutionPolicy Remotesigned
powershell Get-ExecutionPolicy
echo スクリプト実行
pause
powershell %CD%\A.ps1
echo 実行ポリシー戻し
powershell -Command Set-ExecutionPolicy %backupPolicy%
powershell Get-ExecutionPolicy
pause

更新日付

04 2026/05 06
S M T W T F S
1 2
3 4 5 7 8
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31

RECOMMEND

プロフィール

HN:
Account
HP:
性別:
非公開
職業:
--- NODATA ---
趣味:
--- NODATA ---
自己紹介:
◆当blogは、Linuxサーバ構築する際の実際の設定手順を個人的メモとして記載しております。LinuC試験の役に立つ情報があるかも…?

リンク

 | HOME |  次のページ>>
Copyright ©  -- LinuC(Linux技術者認定資格)&リナックスサーバ構築設定事例 --  All Rights Reserved
Design by CriCri / Photo by Melonenmann / powered by NINJA TOOLS / 忍者ブログ / [PR]