Legg til full struktur og maler
This commit is contained in:
parent
c89e9ca909
commit
e066bbee66
40 changed files with 519 additions and 0 deletions
21
.editorconfig
Normal file
21
.editorconfig
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
root = true
|
||||
|
||||
[*]
|
||||
charset = utf-8
|
||||
end_of_line = lf
|
||||
insert_final_newline = true
|
||||
trim_trailing_whitespace = true
|
||||
indent_style = space
|
||||
indent_size = 4
|
||||
|
||||
[*.{ps1,psm1,psd1}]
|
||||
indent_size = 4
|
||||
|
||||
[*.sh]
|
||||
indent_size = 2
|
||||
|
||||
[*.py]
|
||||
indent_size = 4
|
||||
|
||||
[*.{yml,yaml,json,md}]
|
||||
indent_size = 2
|
||||
30
.gitignore
vendored
Normal file
30
.gitignore
vendored
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
# Hemmeligheter - skal ALDRI committes
|
||||
*.secret
|
||||
*.key
|
||||
*.pem
|
||||
*.pfx
|
||||
.env
|
||||
.env.*
|
||||
secrets.*
|
||||
credentials.*
|
||||
|
||||
# Logger og midlertidige filer
|
||||
*.log
|
||||
*.tmp
|
||||
tmp/
|
||||
out/
|
||||
|
||||
# PowerShell
|
||||
*.psd1.bak
|
||||
|
||||
# Python
|
||||
__pycache__/
|
||||
*.pyc
|
||||
.venv/
|
||||
venv/
|
||||
|
||||
# OS / editor
|
||||
.DS_Store
|
||||
Thumbs.db
|
||||
.vscode/
|
||||
.idea/
|
||||
8
CHANGELOG.md
Normal file
8
CHANGELOG.md
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
# Endringslogg
|
||||
|
||||
Alle vesentlige endringer i scriptbiblioteket noteres her (nyeste øverst).
|
||||
|
||||
Format: `ÅÅÅÅ-MM-DD – [plattform] kort beskrivelse (initialer)`
|
||||
|
||||
## Ikke utgitt
|
||||
- 2026-06-18 – [struktur] Opprettet biblioteket med mappestruktur, maler og eksempel (W-tek)
|
||||
61
CONTRIBUTING.md
Normal file
61
CONTRIBUTING.md
Normal file
|
|
@ -0,0 +1,61 @@
|
|||
# Bidragsguide – W-tek Scriptbibliotek
|
||||
|
||||
Følg disse konvensjonene så biblioteket holder seg ryddig, trygt og enkelt å bruke.
|
||||
|
||||
## 1. Navnekonvensjoner
|
||||
|
||||
| Språk | Konvensjon | Eksempel |
|
||||
|--------------|------------------------------------|-----------------------------------|
|
||||
| PowerShell | `Verb-Noun.ps1` (godkjent verb, PascalCase) | `Get-DiskSpaceReport.ps1` |
|
||||
| Bash/Shell | `kebab-case.sh` | `rotate-log-files.sh` |
|
||||
| Python | `snake_case.py` | `export_user_report.py` |
|
||||
| Batch/CMD | `kebab-case.cmd` | `map-network-drives.cmd` |
|
||||
|
||||
- Bruk **godkjente PowerShell-verb** (`Get-Verb`): Get, Set, New, Remove, Invoke, Update, Enable, Disable osv.
|
||||
- Navnet skal beskrive hva scriptet gjør, ikke hvilket system (systemet framgår av mappen).
|
||||
|
||||
## 2. Mappeplassering
|
||||
|
||||
Plattform på toppnivå, funksjon som undermappe (se `README.md`).
|
||||
- Enkelt script = én fil i riktig mappe.
|
||||
- Sammensatt script (flere filer, moduler, ressurser) = egen undermappe med `README.md` basert på `templates/SCRIPT_README_TEMPLATE.md`.
|
||||
|
||||
## 3. Obligatorisk header
|
||||
|
||||
Hvert script **skal** ha en utfylt header (bruk malen for språket). Minimumsfelt:
|
||||
|
||||
- Kort beskrivelse (synopsis) og en lengre beskrivelse
|
||||
- Alle parametere/argumenter dokumentert
|
||||
- Minst ett kjøre-eksempel
|
||||
- **Forfatter**, **opprettet-dato**, **versjon**
|
||||
- **Plattform/krav** (f.eks. PowerShell 5.1/7, moduler, rettigheter)
|
||||
- **Endringslogg** (dato, versjon, hva og hvem)
|
||||
- **Tags** for søk (f.eks. `m365, entra, rapportering`)
|
||||
|
||||
## 4. Sikkerhet (viktig)
|
||||
|
||||
- **Ingen hemmeligheter i koden eller historikken.** Aldri passord, API-nøkler, tokens, sertifikater eller kundedata.
|
||||
- Hent hemmeligheter via parametere, miljøvariabler eller en hemmelighetsløsning (f.eks. Windows Credential Manager, Azure Key Vault).
|
||||
- Spesielt for **NinjaRMM / SentinelOne / Cove / Graph**: API-nøkler skal aldri committes. Bruk plassholdere som `$env:S1_API_TOKEN`.
|
||||
- Skulle en hemmelighet ved et uhell bli committet: rull nøkkelen umiddelbart og gi beskjed – historikken må renses.
|
||||
|
||||
## 5. Kvalitet og kjøring
|
||||
|
||||
- Skriv **idempotente** script der det er mulig.
|
||||
- Endringsscript skal støtte tørrkjøring: PowerShell `-WhatIf`/`-Confirm`, Bash/Python en `--dry-run`-flagg.
|
||||
- Håndter feil eksplisitt (`try/catch`, `set -euo pipefail`, `try/except`) og gi tydelige exit-koder.
|
||||
- Logg det som er relevant, men aldri hemmeligheter.
|
||||
|
||||
## 6. Git-arbeidsflyt
|
||||
|
||||
1. Lag en branch: `feature/<kort-beskrivelse>` eller `fix/<kort-beskrivelse>`.
|
||||
2. Commit-melding: kort og beskrivende, gjerne `[plattform] handling` – f.eks. `[m365] legg til lisensrapport`.
|
||||
3. Åpne en **pull request**. Minst én kollega gjennomgår før merge (firekontroll – relevant for ISO 9001/27001).
|
||||
4. Oppdater `CHANGELOG.md` ved større tillegg/endringer.
|
||||
|
||||
## 7. Testkrav
|
||||
|
||||
Før merge skal scriptet være testet. Beskriv i PR-en (eller scriptets README):
|
||||
- Hva som er testet
|
||||
- Hvilken plattform/versjon det er testet på
|
||||
- Eventuelle forutsetninger/begrensninger
|
||||
10
_shared/README.md
Normal file
10
_shared/README.md
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
# Delte ressurser
|
||||
|
||||
Gjenbrukbar kode og ressurser på tvers av plattformene.
|
||||
|
||||
**Undermapper**
|
||||
- `modules/` – PowerShell-moduler (.psm1) til import i flere script
|
||||
- `functions/` – frittstående hjelpefunksjoner/snutter
|
||||
- `assets/` – maler, ikoner, konfig-eksempler (uten hemmeligheter)
|
||||
|
||||
Legg felles logikk her i stedet for å duplisere den i hvert script.
|
||||
1
_shared/assets/.gitkeep
Normal file
1
_shared/assets/.gitkeep
Normal file
|
|
@ -0,0 +1 @@
|
|||
# Behold mappen i git. Slett denne fila naar mappen faar innhold.
|
||||
1
_shared/functions/.gitkeep
Normal file
1
_shared/functions/.gitkeep
Normal file
|
|
@ -0,0 +1 @@
|
|||
# Behold mappen i git. Slett denne fila naar mappen faar innhold.
|
||||
1
_shared/modules/.gitkeep
Normal file
1
_shared/modules/.gitkeep
Normal file
|
|
@ -0,0 +1 @@
|
|||
# Behold mappen i git. Slett denne fila naar mappen faar innhold.
|
||||
10
cove/README.md
Normal file
10
cove/README.md
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
# Cove (Cove Data Protection)
|
||||
|
||||
Script for overvåking og rapportering av Cove-backup (N-able).
|
||||
|
||||
**Undermapper**
|
||||
- `backup-jobs/` – jobbstyring og konfigurasjon
|
||||
- `monitoring/` – status, feilede jobber, varsling
|
||||
- `reporting/` – backup- og gjenopprettingsrapporter
|
||||
|
||||
SIKKERHET: API-/innloggingslegitimasjon leveres som miljøvariabler/parametere – aldri i koden.
|
||||
1
cove/backup-jobs/.gitkeep
Normal file
1
cove/backup-jobs/.gitkeep
Normal file
|
|
@ -0,0 +1 @@
|
|||
# Behold mappen i git. Slett denne fila naar mappen faar innhold.
|
||||
1
cove/monitoring/.gitkeep
Normal file
1
cove/monitoring/.gitkeep
Normal file
|
|
@ -0,0 +1 @@
|
|||
# Behold mappen i git. Slett denne fila naar mappen faar innhold.
|
||||
1
cove/reporting/.gitkeep
Normal file
1
cove/reporting/.gitkeep
Normal file
|
|
@ -0,0 +1 @@
|
|||
# Behold mappen i git. Slett denne fila naar mappen faar innhold.
|
||||
4
docs/README.md
Normal file
4
docs/README.md
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
# Dokumentasjon
|
||||
|
||||
Overordnet dokumentasjon for scriptbiblioteket: konvensjoner, beslutninger og
|
||||
eventuelle driftsnotater. Se også `../README.md` og `../CONTRIBUTING.md`.
|
||||
14
microsoft-365/README.md
Normal file
14
microsoft-365/README.md
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
# Microsoft 365
|
||||
|
||||
Script mot M365-tjenester via PowerShell-moduler (Microsoft.Graph, ExchangeOnlineManagement,
|
||||
MicrosoftTeams, PnP.PowerShell) eller Graph API.
|
||||
|
||||
**Undermapper**
|
||||
- `entra-id/` – brukere, grupper, lisenser, betinget tilgang
|
||||
- `exchange-online/` – postbokser, regler, distribusjonslister
|
||||
- `teams/` – team, policyer, kanaler
|
||||
- `sharepoint-onedrive/` – nettsteder, deling, lagring
|
||||
- `security-compliance/` – Defender, revisjon, DLP, samsvar
|
||||
- `reporting/` – lisens-, bruks- og sikkerhetsrapporter
|
||||
|
||||
SIKKERHET: App-registreringer/secrets og tokens skal aldri committes – bruk parametere/miljøvariabler.
|
||||
1
microsoft-365/entra-id/.gitkeep
Normal file
1
microsoft-365/entra-id/.gitkeep
Normal file
|
|
@ -0,0 +1 @@
|
|||
# Behold mappen i git. Slett denne fila naar mappen faar innhold.
|
||||
1
microsoft-365/exchange-online/.gitkeep
Normal file
1
microsoft-365/exchange-online/.gitkeep
Normal file
|
|
@ -0,0 +1 @@
|
|||
# Behold mappen i git. Slett denne fila naar mappen faar innhold.
|
||||
1
microsoft-365/reporting/.gitkeep
Normal file
1
microsoft-365/reporting/.gitkeep
Normal file
|
|
@ -0,0 +1 @@
|
|||
# Behold mappen i git. Slett denne fila naar mappen faar innhold.
|
||||
1
microsoft-365/security-compliance/.gitkeep
Normal file
1
microsoft-365/security-compliance/.gitkeep
Normal file
|
|
@ -0,0 +1 @@
|
|||
# Behold mappen i git. Slett denne fila naar mappen faar innhold.
|
||||
1
microsoft-365/sharepoint-onedrive/.gitkeep
Normal file
1
microsoft-365/sharepoint-onedrive/.gitkeep
Normal file
|
|
@ -0,0 +1 @@
|
|||
# Behold mappen i git. Slett denne fila naar mappen faar innhold.
|
||||
1
microsoft-365/teams/.gitkeep
Normal file
1
microsoft-365/teams/.gitkeep
Normal file
|
|
@ -0,0 +1 @@
|
|||
# Behold mappen i git. Slett denne fila naar mappen faar innhold.
|
||||
12
ninjarmm/README.md
Normal file
12
ninjarmm/README.md
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
# NinjaRMM
|
||||
|
||||
Script som distribueres og kjøres via NinjaRMM på endepunkter/servere.
|
||||
|
||||
**Undermapper**
|
||||
- `automations/` – planlagte/utløste automasjoner
|
||||
- `monitoring/` – tilstandssjekker som rapporterer tilbake til Ninja
|
||||
- `software-deployment/` – installasjon/oppdatering av programvare
|
||||
- `reporting/` – uttrekk og statusrapporter
|
||||
|
||||
Merk: Ninja kjører ofte script som SYSTEM. Test rettigheter og exit-koder nøye.
|
||||
API-nøkler/legitimasjon hentes via Ninja sine egne variabler eller miljøvariabler – aldri hardkodet.
|
||||
1
ninjarmm/automations/.gitkeep
Normal file
1
ninjarmm/automations/.gitkeep
Normal file
|
|
@ -0,0 +1 @@
|
|||
# Behold mappen i git. Slett denne fila naar mappen faar innhold.
|
||||
1
ninjarmm/monitoring/.gitkeep
Normal file
1
ninjarmm/monitoring/.gitkeep
Normal file
|
|
@ -0,0 +1 @@
|
|||
# Behold mappen i git. Slett denne fila naar mappen faar innhold.
|
||||
1
ninjarmm/reporting/.gitkeep
Normal file
1
ninjarmm/reporting/.gitkeep
Normal file
|
|
@ -0,0 +1 @@
|
|||
# Behold mappen i git. Slett denne fila naar mappen faar innhold.
|
||||
1
ninjarmm/software-deployment/.gitkeep
Normal file
1
ninjarmm/software-deployment/.gitkeep
Normal file
|
|
@ -0,0 +1 @@
|
|||
# Behold mappen i git. Slett denne fila naar mappen faar innhold.
|
||||
11
sentinelone/README.md
Normal file
11
sentinelone/README.md
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
# SentinelOne
|
||||
|
||||
Script for utrulling, respons og rapportering mot SentinelOne, inkl. API-bruk.
|
||||
|
||||
**Undermapper**
|
||||
- `deployment/` – agent-installasjon/avinstallasjon
|
||||
- `response-actions/` – isolering, opprydding, respons
|
||||
- `reporting/` – trussel-/agent-rapporter
|
||||
- `api/` – gjenbrukbare API-kall (Mgmt API)
|
||||
|
||||
SIKKERHET: `S1_API_TOKEN` og console-URL leveres som miljøvariabler/parametere – aldri i koden.
|
||||
1
sentinelone/api/.gitkeep
Normal file
1
sentinelone/api/.gitkeep
Normal file
|
|
@ -0,0 +1 @@
|
|||
# Behold mappen i git. Slett denne fila naar mappen faar innhold.
|
||||
1
sentinelone/deployment/.gitkeep
Normal file
1
sentinelone/deployment/.gitkeep
Normal file
|
|
@ -0,0 +1 @@
|
|||
# Behold mappen i git. Slett denne fila naar mappen faar innhold.
|
||||
1
sentinelone/reporting/.gitkeep
Normal file
1
sentinelone/reporting/.gitkeep
Normal file
|
|
@ -0,0 +1 @@
|
|||
# Behold mappen i git. Slett denne fila naar mappen faar innhold.
|
||||
1
sentinelone/response-actions/.gitkeep
Normal file
1
sentinelone/response-actions/.gitkeep
Normal file
|
|
@ -0,0 +1 @@
|
|||
# Behold mappen i git. Slett denne fila naar mappen faar innhold.
|
||||
37
templates/SCRIPT_README_TEMPLATE.md
Normal file
37
templates/SCRIPT_README_TEMPLATE.md
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
# <Scriptnavn>
|
||||
|
||||
Kort beskrivelse av hva scriptet/mappen løser.
|
||||
|
||||
## Formål
|
||||
Hva scriptet gjør og når du bruker det.
|
||||
|
||||
## Forutsetninger
|
||||
- Plattform/versjon: <f.eks. PowerShell 7, Microsoft.Graph-modul>
|
||||
- Rettigheter: <f.eks. Global Reader, lokal admin>
|
||||
- Hemmeligheter: <hvilke, og hvordan de leveres – f.eks. $env:API_TOKEN>
|
||||
|
||||
## Bruk
|
||||
```
|
||||
<eksempelkommando>
|
||||
```
|
||||
|
||||
## Parametere
|
||||
| Parameter | Påkrevd | Beskrivelse |
|
||||
|-----------|---------|-------------|
|
||||
| `...` | Ja/Nei | ... |
|
||||
|
||||
## Eksempler
|
||||
```
|
||||
<eksempel 1>
|
||||
<eksempel 2>
|
||||
```
|
||||
|
||||
## Testet
|
||||
- Dato: ÅÅÅÅ-MM-DD
|
||||
- Testet på: <miljø/versjon>
|
||||
- Forfatter: <initialer>
|
||||
|
||||
## Endringslogg
|
||||
| Dato | Versjon | Endring | Av |
|
||||
|------|---------|---------|----|
|
||||
| ÅÅÅÅ-MM-DD | 1.0.0 | Første versjon | <init> |
|
||||
69
templates/template.ps1
Normal file
69
templates/template.ps1
Normal file
|
|
@ -0,0 +1,69 @@
|
|||
<#
|
||||
.SYNOPSIS
|
||||
Kort, én-setnings beskrivelse av hva scriptet gjør.
|
||||
|
||||
.DESCRIPTION
|
||||
Lengre beskrivelse: hva scriptet løser, hvordan det fungerer, og eventuelle
|
||||
forutsetninger eller bivirkninger man bør være klar over.
|
||||
|
||||
.PARAMETER Eksempelparameter
|
||||
Beskriv hva parameteren styrer, og gyldige verdier.
|
||||
|
||||
.PARAMETER WhatIf
|
||||
Tørrkjør uten å gjøre endringer (støttes via SupportsShouldProcess).
|
||||
|
||||
.EXAMPLE
|
||||
.\Verb-Noun.ps1 -Eksempelparameter "verdi"
|
||||
Beskriv hva eksempelet gjør.
|
||||
|
||||
.EXAMPLE
|
||||
.\Verb-Noun.ps1 -Eksempelparameter "verdi" -WhatIf
|
||||
Viser hva som ville blitt gjort, uten å endre noe.
|
||||
|
||||
.NOTES
|
||||
Forfatter : Fornavn Etternavn (initialer)
|
||||
Opprettet : ÅÅÅÅ-MM-DD
|
||||
Versjon : 1.0.0
|
||||
Plattform : Windows Server 2019/2022 | M365 | NinjaRMM | SentinelOne | Cove
|
||||
Krav : PowerShell 5.1+ (eller 7+), moduler: <f.eks. Microsoft.Graph>
|
||||
Rettigheter : <f.eks. lokal admin / Global Reader>
|
||||
Tags : tag1, tag2, tag3
|
||||
|
||||
Endringslogg:
|
||||
ÅÅÅÅ-MM-DD 1.0.0 Første versjon (initialer)
|
||||
|
||||
SIKKERHET: Aldri hemmeligheter i koden. Bruk parametere eller miljøvariabler,
|
||||
f.eks. $env:API_TOKEN.
|
||||
#>
|
||||
|
||||
#Requires -Version 5.1
|
||||
# #Requires -Modules Microsoft.Graph # avkommenter ved behov
|
||||
|
||||
[CmdletBinding(SupportsShouldProcess = $true)]
|
||||
param(
|
||||
[Parameter(Mandatory = $true)]
|
||||
[string] $Eksempelparameter
|
||||
)
|
||||
|
||||
begin {
|
||||
$ErrorActionPreference = 'Stop'
|
||||
Set-StrictMode -Version Latest
|
||||
Write-Verbose "Starter $($MyInvocation.MyCommand.Name)"
|
||||
}
|
||||
|
||||
process {
|
||||
try {
|
||||
if ($PSCmdlet.ShouldProcess($Eksempelparameter, "Beskriv handlingen")) {
|
||||
# --- Hovedlogikk her ---
|
||||
Write-Output "Kjører mot: $Eksempelparameter"
|
||||
}
|
||||
}
|
||||
catch {
|
||||
Write-Error "Feilet: $($_.Exception.Message)"
|
||||
exit 1
|
||||
}
|
||||
}
|
||||
|
||||
end {
|
||||
Write-Verbose "Ferdig."
|
||||
}
|
||||
58
templates/template.py
Normal file
58
templates/template.py
Normal file
|
|
@ -0,0 +1,58 @@
|
|||
#!/usr/bin/env python3
|
||||
"""Kort, én-setnings beskrivelse av hva scriptet gjør.
|
||||
|
||||
Lengre beskrivelse av formål, virkemåte og forutsetninger.
|
||||
|
||||
Bruk:
|
||||
python snake_case.py --eksempel "verdi" [--dry-run]
|
||||
|
||||
Eksempel:
|
||||
python snake_case.py --eksempel "verdi" --dry-run
|
||||
|
||||
Metadata:
|
||||
Forfatter : Fornavn Etternavn (initialer)
|
||||
Opprettet : ÅÅÅÅ-MM-DD
|
||||
Versjon : 1.0.0
|
||||
Plattform : <tjeneste / API>
|
||||
Krav : Python 3.9+, pakker: <f.eks. requests, msal>
|
||||
Tags : tag1, tag2
|
||||
|
||||
Endringslogg:
|
||||
ÅÅÅÅ-MM-DD 1.0.0 Første versjon (initialer)
|
||||
|
||||
SIKKERHET: Aldri hemmeligheter i koden. Les dem fra miljøvariabler,
|
||||
f.eks. os.environ["API_TOKEN"].
|
||||
"""
|
||||
from __future__ import annotations
|
||||
|
||||
import argparse
|
||||
import logging
|
||||
import sys
|
||||
|
||||
logging.basicConfig(level=logging.INFO, format="%(asctime)s %(levelname)s %(message)s")
|
||||
log = logging.getLogger(__name__)
|
||||
|
||||
|
||||
def parse_args() -> argparse.Namespace:
|
||||
p = argparse.ArgumentParser(description=__doc__.splitlines()[0])
|
||||
p.add_argument("--eksempel", required=True, help="Beskriv parameteren.")
|
||||
p.add_argument("--dry-run", action="store_true", help="Tørrkjør uten endringer.")
|
||||
return p.parse_args()
|
||||
|
||||
|
||||
def main() -> int:
|
||||
args = parse_args()
|
||||
try:
|
||||
if args.dry_run:
|
||||
log.info("[dry-run] Ville kjørt mot: %s", args.eksempel)
|
||||
return 0
|
||||
# --- Hovedlogikk her ---
|
||||
log.info("Kjører mot: %s", args.eksempel)
|
||||
return 0
|
||||
except Exception as exc: # noqa: BLE001
|
||||
log.error("Feilet: %s", exc)
|
||||
return 1
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
sys.exit(main())
|
||||
51
templates/template.sh
Normal file
51
templates/template.sh
Normal file
|
|
@ -0,0 +1,51 @@
|
|||
#!/usr/bin/env bash
|
||||
# =============================================================================
|
||||
# Navn : kebab-case.sh
|
||||
# Synopsis : Kort, én-setnings beskrivelse av hva scriptet gjør.
|
||||
# Beskrivelse: Lengre beskrivelse av formål og virkemåte.
|
||||
#
|
||||
# Bruk : ./kebab-case.sh [--dry-run] <argument>
|
||||
# Eksempel : ./kebab-case.sh --dry-run /sti/til/noe
|
||||
#
|
||||
# Forfatter : Fornavn Etternavn (initialer)
|
||||
# Opprettet : ÅÅÅÅ-MM-DD
|
||||
# Versjon : 1.0.0
|
||||
# Plattform : Linux/macOS | <tjeneste>
|
||||
# Krav : bash 4+, <evt. verktøy: jq, curl>
|
||||
# Tags : tag1, tag2
|
||||
#
|
||||
# Endringslogg:
|
||||
# ÅÅÅÅ-MM-DD 1.0.0 Første versjon (initialer)
|
||||
#
|
||||
# SIKKERHET: Aldri hemmeligheter i koden. Bruk miljøvariabler, f.eks. $API_TOKEN.
|
||||
# =============================================================================
|
||||
set -euo pipefail
|
||||
|
||||
DRY_RUN=0
|
||||
|
||||
usage() {
|
||||
grep '^# ' "$0" | sed 's/^# \{0,1\}//'
|
||||
exit "${1:-0}"
|
||||
}
|
||||
|
||||
# --- Argumenthåndtering ---
|
||||
while [ $# -gt 0 ]; do
|
||||
case "$1" in
|
||||
--dry-run) DRY_RUN=1; shift ;;
|
||||
-h|--help) usage 0 ;;
|
||||
*) ARG="$1"; shift ;;
|
||||
esac
|
||||
done
|
||||
|
||||
: "${ARG:?Mangler argument. Se --help}"
|
||||
|
||||
main() {
|
||||
if [ "$DRY_RUN" -eq 1 ]; then
|
||||
echo "[dry-run] Ville kjørt mot: $ARG"
|
||||
return 0
|
||||
fi
|
||||
# --- Hovedlogikk her ---
|
||||
echo "Kjører mot: $ARG"
|
||||
}
|
||||
|
||||
main "$@"
|
||||
12
windows-server/README.md
Normal file
12
windows-server/README.md
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
# Windows Server
|
||||
|
||||
Script for drift, vedlikehold og herding av Windows Server (2016/2019/2022).
|
||||
|
||||
**Undermapper**
|
||||
- `maintenance/` – opprydding, diskvedlikehold, oppdateringer, omstart-rutiner
|
||||
- `monitoring/` – helsesjekker, tjenestestatus, ytelse
|
||||
- `security-hardening/` – baseline/herding, GPO, lokal sikkerhetspolicy
|
||||
- `deployment/` – rolle-/funksjonsinstallasjon, konfigurasjon
|
||||
- `reporting/` – inventar- og statusrapporter
|
||||
|
||||
Hovedspråk: PowerShell. Se `../templates/template.ps1`.
|
||||
1
windows-server/deployment/.gitkeep
Normal file
1
windows-server/deployment/.gitkeep
Normal file
|
|
@ -0,0 +1 @@
|
|||
# Behold mappen i git. Slett denne fila naar mappen faar innhold.
|
||||
87
windows-server/maintenance/Get-DiskSpaceReport.ps1
Normal file
87
windows-server/maintenance/Get-DiskSpaceReport.ps1
Normal file
|
|
@ -0,0 +1,87 @@
|
|||
<#
|
||||
.SYNOPSIS
|
||||
Lager en rapport over diskbruk på en eller flere Windows-servere.
|
||||
|
||||
.DESCRIPTION
|
||||
Henter ledig og total kapasitet for alle faste disker via CIM, og markerer
|
||||
volumer som har mindre ledig plass enn en gitt terskel. Resultatet kan vises
|
||||
i konsollet eller eksporteres til CSV. Skriveoperasjonen (CSV) støtter -WhatIf.
|
||||
|
||||
.PARAMETER ComputerName
|
||||
En eller flere maskiner å sjekke. Standard er den lokale maskinen.
|
||||
|
||||
.PARAMETER ThresholdPercent
|
||||
Terskel for ledig plass i prosent. Volumer under terskelen flagges. Standard 15.
|
||||
|
||||
.PARAMETER CsvPath
|
||||
Valgfri sti for CSV-eksport. Utelates for kun konsoll-utskrift.
|
||||
|
||||
.EXAMPLE
|
||||
.\Get-DiskSpaceReport.ps1
|
||||
Viser diskbruk for den lokale serveren med standardterskel (15 %).
|
||||
|
||||
.EXAMPLE
|
||||
.\Get-DiskSpaceReport.ps1 -ComputerName SRV01,SRV02 -ThresholdPercent 10 -CsvPath C:\Temp\disk.csv
|
||||
Sjekker to servere med 10 % terskel og eksporterer til CSV.
|
||||
|
||||
.NOTES
|
||||
Forfatter : W-tek Drift (WT)
|
||||
Opprettet : 2026-06-18
|
||||
Versjon : 1.0.0
|
||||
Plattform : Windows Server 2016/2019/2022
|
||||
Krav : PowerShell 5.1+, WinRM for fjernkjøring
|
||||
Rettigheter : Lokal admin på målmaskinene
|
||||
Tags : windows-server, disk, vedlikehold, rapportering
|
||||
|
||||
Endringslogg:
|
||||
2026-06-18 1.0.0 Første versjon (WT)
|
||||
#>
|
||||
|
||||
#Requires -Version 5.1
|
||||
|
||||
[CmdletBinding(SupportsShouldProcess = $true)]
|
||||
param(
|
||||
[string[]] $ComputerName = $env:COMPUTERNAME,
|
||||
[ValidateRange(1, 99)]
|
||||
[int] $ThresholdPercent = 15,
|
||||
[string] $CsvPath
|
||||
)
|
||||
|
||||
begin {
|
||||
$ErrorActionPreference = 'Stop'
|
||||
Set-StrictMode -Version Latest
|
||||
$results = [System.Collections.Generic.List[object]]::new()
|
||||
}
|
||||
|
||||
process {
|
||||
foreach ($computer in $ComputerName) {
|
||||
try {
|
||||
$disks = Get-CimInstance -ClassName Win32_LogicalDisk -Filter "DriveType=3" -ComputerName $computer
|
||||
foreach ($disk in $disks) {
|
||||
$freePct = [math]::Round(($disk.FreeSpace / $disk.Size) * 100, 1)
|
||||
$results.Add([pscustomobject]@{
|
||||
Server = $computer
|
||||
Drive = $disk.DeviceID
|
||||
FreeGB = [math]::Round($disk.FreeSpace / 1GB, 1)
|
||||
TotalGB = [math]::Round($disk.Size / 1GB, 1)
|
||||
FreePercent = $freePct
|
||||
BelowThreshold = $freePct -lt $ThresholdPercent
|
||||
})
|
||||
}
|
||||
}
|
||||
catch {
|
||||
Write-Warning "Kunne ikke hente data fra ${computer}: $($_.Exception.Message)"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
end {
|
||||
$results | Sort-Object FreePercent | Format-Table -AutoSize
|
||||
|
||||
if ($CsvPath) {
|
||||
if ($PSCmdlet.ShouldProcess($CsvPath, "Skriv CSV-rapport")) {
|
||||
$results | Export-Csv -Path $CsvPath -NoTypeInformation -Encoding UTF8
|
||||
Write-Output "Rapport skrevet til $CsvPath"
|
||||
}
|
||||
}
|
||||
}
|
||||
1
windows-server/monitoring/.gitkeep
Normal file
1
windows-server/monitoring/.gitkeep
Normal file
|
|
@ -0,0 +1 @@
|
|||
# Behold mappen i git. Slett denne fila naar mappen faar innhold.
|
||||
1
windows-server/reporting/.gitkeep
Normal file
1
windows-server/reporting/.gitkeep
Normal file
|
|
@ -0,0 +1 @@
|
|||
# Behold mappen i git. Slett denne fila naar mappen faar innhold.
|
||||
1
windows-server/security-hardening/.gitkeep
Normal file
1
windows-server/security-hardening/.gitkeep
Normal file
|
|
@ -0,0 +1 @@
|
|||
# Behold mappen i git. Slett denne fila naar mappen faar innhold.
|
||||
Loading…
Reference in a new issue