VMware ESX vCenter Linux windows CCNA 忍者ブログ

IT号 着地号 いろいろ号

 ITに関しての調べ物です。バージョンや出展はつど記事に記載予定です。

カレンダー
05 2025/06 07
S M T W T F S
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
リンク
カテゴリー
かぶりもの
最新CM
[06/07 gay]
[02/16 gay]
[02/12 ヴィトン セカンドバッグ スーパーコピー ヴィトン]
[09/30 vente boutique canada goose paris]
[09/28 canada goose belgique]
最新記事
プロフィール
HN:
ESXi
性別:
非公開
バーコード
RSS
ブログ内検索
アーカイブ
最古記事
(01/14)
(01/20)
(01/20)
(01/26)
(01/26)
忍者アナライズ

txtファイルとエクセルファイル内の文字列を検索

以下にtxtファイルとエクセルファイル内の文字列を検索する例を示します。

Get-ChildItem -Path "検索対象のフォルダパス" -Recurse -Filter "*.txt","*.xlsx","*.xls" | Select-String -Pattern "検索したい文字列"

一行です。

拍手[0回]

PR
2025.03.23 (Sun)
Category[PowerShell]
Comment(0)

Powershell圧縮

▼Powershell
# 圧縮対象のフォルダパス
$sourceDir = "C:\path\to\your\files"

# 圧縮ファイルの出力先フォルダパス
$archiveDir = "C:\path\to\your\archives"

# 圧縮対象の更新日時(YYYYMM形式で指定)
$targetDate = "202008" # 例:2020年8月

# 圧縮処理
try {
  # 圧縮対象のファイルを検索
  $filesToArchive = Get-ChildItem -Path $sourceDir | Where-Object { $_.LastWriteTime.ToString("yyyyMM") -eq $targetDate -and $_.Extension -eq ".txt" }

  if ($filesToArchive) {
    foreach ($file in $filesToArchive) {
      # 圧縮ファイル名を作成(YYYYMM形式)
      $archiveName = "{0}\{1}.zip" -f $archiveDir, $file.LastWriteTime.ToString("yyyyMM")

      # 同名ファイルが存在する場合は連番を付与
      $counter = 1
      while (Test-Path -Path $archiveName) {
        $archiveName = "{0}\{1}_{2}.zip" -f $archiveDir, $file.LastWriteTime.ToString("yyyyMM"), $counter
        $counter++
      }

      # 圧縮を実行
      Compress-Archive -Path $file.FullName -DestinationPath $archiveName -CompressionLevel Optimal

      # 圧縮が成功したら元のファイルを削除
      if (Test-Path -Path $archiveName) {
        Remove-Item -Path $file.FullName -Force
        Write-Host "File '$file.FullName' archived to '$archiveName' and deleted."
      } else {
        Write-Error "Failed to archive '$file.FullName'."
      }
    }
  } else {
    Write-Host "No files found to archive for the specified date '$targetDate'."
  }
} catch {
  Write-Error "An error occurred: $_"
}

▼スクリプトの説明:
変数の定義:
$sourceDir: 圧縮対象のファイルがあるフォルダパスを指定します。
$archiveDir: 圧縮ファイルを保存するフォルダパスを指定します。
$targetDate: 圧縮対象ファイルの更新日時を YYYYMM 形式で指定します(例: "202008")。
ファイルの検索:

Get-ChildItem コマンドで指定したフォルダ内のすべてのファイルを取得します。
Where-Object コマンドで、更新日時が $targetDate と一致し、拡張子が ".txt" のファイルを絞り込みます。
圧縮処理:

絞り込まれたファイルごとに以下の処理を行います。
圧縮ファイル名を YYYYMM 形式で作成します。
同名ファイルが存在する場合は、連番を付与してファイル名が重複しないようにします。
Compress-Archive コマンドでファイルを圧縮します。
圧縮が成功したら、Remove-Item コマンドで元のファイルを削除します。
エラー処理:

try-catch ブロックでエラーを捕捉し、エラーメッセージを表示します。
スクリプトの実行方法:

スクリプトをテキストファイルに保存します(例: archive_files.ps1)。
PowerShell を管理者権限で実行します。
スクリプトを保存したパスに移動します。
.\archive_files.ps1 と入力してスクリプトを実行します。
注意点:

スクリプト実行前に、$sourceDir、$archiveDir、$targetDate の値を適切に設定してください。
圧縮対象のファイルが存在しない場合は、メッセージが表示されます。
圧縮処理中にエラーが発生した場合は、エラーメッセージが表示されます。
スクリプト実行後、元のファイルは削除されますので、ご注意ください。

拍手[0回]

2025.02.18 (Tue)
Category[PowerShell]
Comment(0)

リモートサーバー名と共有フォルダ名、出力先を指定

# リモートサーバー名と共有フォルダ名、出力先を指定
$remoteServer = "NameServer01"
$shareName = "G$"
$outputPath = "C:\Temp"

# 出力ファイル名(タイムスタンプ付き)
$outputFile = Join-Path $outputPath ("$($shareName)_DriveInfo_$(Get-Date -Format yyyyMMdd_HHmmss).csv")

# リモートGドライブの情報を取得し、CSVファイルに出力
Get-ChildItem -Path "\\$remoteServer\$shareName" -Recurse | Select-Object Name, LastWriteTime, FullName | Export-Csv -Path $outputFile -NoTypeInformation

# 結果を表示
Write-Host "結果を以下のファイルに出力しました:" $outputFile

拍手[0回]

2024.11.15 (Fri)
Category[PowerShell]
Comment(0)

1GB以上のファイルを探す

カレントディレクトリ配下のディレクトリを再帰的に検索して
1GB以上のファイルをDドライブに出力している。

Get-ChildItem -Recurse -Force | Where-Object {$_.Length -gt 1GB} | Select-Object FullName, @{Name='SizeGB';Expression={$_.Length / 1GB}} > D:\largefiles.txt

拍手[0回]

2024.11.14 (Thu)
Category[PowerShell]
Comment(0)

各サーバの容量を確認する

とりあえず形にしました。

#
# Cドライブの空き容量が90GBを下回った場合にのみメッセージを出力したい場合
#

# 監視対象ドライブ
$targetDrive = "C"

# しきい値(GB単位)
$threshold = 90

# パスワードファイルのパス
$credentialFile = "C:\passwords.txt"

# パスワードファイルからユーザー名とパスワードを読み込む
$credentials = Get-Content $credentialFile | ConvertFrom-Csv

# 各サーバに対して処理を実行
foreach ($server in $servers) {
$credential = $credentials | Where-Object { $_.ServerName -eq $server }

# Credentialオブジェクトを作成
$credentialObject = New-Object System.Management.Automation.PSCredential (
$credential.Username,
(ConvertTo-SecureString $credential.Password -AsPlainText -Force)
)

try {
# サーバに接続し、ディスク容量を取得
Invoke-Command -ComputerName $server -Credential $credentialObject -ScriptBlock {
$volume = Get-Volume -DriveLetter $using:targetDrive
if ($volume.Available -lt $using:threshold * 1GB) {
Write-EventLog -LogName Application -Source "DiskSpaceMonitor" -EventID 1001 -Message
"ドライブ$($volume.DriveLetter)の空き容量がしきい値を下回っています。$($volume.Available / 1GB:N2) GB"
}
}
}
catch {
Write-Warning "サーバー $server への接続に失敗しました: $($_.Exception.Message)"
}
}

拍手[0回]

2024.10.26 (Sat)
Category[PowerShell]
Comment(0)
Copyright © ESXi All Right Reserved.
Powered by Ninja Blog.
Template-Designed by ガスボンベ.